diff --git a/Source/HBIOS/ch376-native/Makefile b/Source/HBIOS/ch376-native/Makefile index ffdc9715..6f25245a 100644 --- a/Source/HBIOS/ch376-native/Makefile +++ b/Source/HBIOS/ch376-native/Makefile @@ -8,7 +8,7 @@ ZCCRELFLAGS := -SO3 --max-allocs-per-node600000 --allow-unsafe-read --opt-code-s SRC := ./source-doc/ LIBS := -I./$(SRC)base-drv/ -ZCCFLAGS := +z80 -vn -startup=0 -clib=sdcc_iy -crt0 $(SRC)crt.asm -compiler=sdcc -Cs--std=c23 -Cs--Werror $(ZCCRELFLAGS) $(LIBS) +ZCCFLAGS := +z80 -vn -startup=0 -clib=sdcc_iy -compiler=sdcc -Cs--std=c23 -Cs--Werror $(ZCCRELFLAGS) $(LIBS) ZCC_PATH := $(shell command -v zcc) ZCC := $(shell command -v zcc >/dev/null 2>&1 && echo zcc || echo 'docker run -w /host/${PWD} -v /:/host/ -u $(shell id -u ${USER}):$(shell id -g ${USER}) -t z88dk/z88dk zcc') @@ -24,10 +24,14 @@ ASSDIR := ./ all: $(ASSDIR)base-drv.s $(ASSDIR)scsi-drv.s $(ASSDIR)ufi-drv.s $(ASSDIR)keyboard.s clean: - @rm -rf base-drv - rm -rf scsi-drv - rm -rf ufi-drv - rm -rf keyboard + @rm -rf base-drv/*.s + rm -rf base-drv/*.asm + rm -rf scsi-drv/*.s + rm -rf scsi-drv/*.asm + rm -rf ufi-drv/*.s + rm -rf ufi-drv/*.asm + rm -rf keyboard/*.s + rm -rf keyboard/*.asm rm ufi-drv.s rm scsi-drv.s rm base-drv.s @@ -38,19 +42,12 @@ $(ASSDIR)%.c.s: $(ASSDIR)%.c.asm echo "Converting $< to $@" ${SRC}convert-for-uz80as.sh $< $@ -$(ASSDIR)%.s: $(SRC)%.asm - @mkdir -p $(dir $@) - cp $< $@ - sed -i "1i\;\r\n; Generated from $< -- not to be modify directly\r\n;\r\n; " $@ - define compile @mkdir -p $(dir $@) $(ZCC) $(ZCCFLAGS) --c-code-in-asm --assemble-only $< -o $@ echo "Compiled $(notdir $@) from $(notdir $<)" endef -ZSDCPP_FLAGS= -I"${ZCCCFG}../../include/_DEVELOPMENT/sdcc" $(LIBS) - define build_subsystem = $$(ASSDIR)$(1).s: @echo "Creating $(1).s" diff --git a/Source/HBIOS/ch376-native/base-drv/.gitignore b/Source/HBIOS/ch376-native/base-drv/.gitignore new file mode 100644 index 00000000..f4cb8488 --- /dev/null +++ b/Source/HBIOS/ch376-native/base-drv/.gitignore @@ -0,0 +1 @@ +*.asm diff --git a/Source/HBIOS/ch376-native/base-drv/ch376.c.asm b/Source/HBIOS/ch376-native/base-drv/ch376.c.asm deleted file mode 100644 index f698491b..00000000 --- a/Source/HBIOS/ch376-native/base-drv/ch376.c.asm +++ /dev/null @@ -1,1136 +0,0 @@ -;-------------------------------------------------------- -; File Created by SDCC : free open source ISO C Compiler -; Version 4.4.0 #14648 (Linux) -;-------------------------------------------------------- -; Processed by Z88DK -;-------------------------------------------------------- - - EXTERN __divschar - EXTERN __divschar_callee - EXTERN __divsint - EXTERN __divsint_callee - EXTERN __divslong - EXTERN __divslong_callee - EXTERN __divslonglong - EXTERN __divslonglong_callee - EXTERN __divsuchar - EXTERN __divsuchar_callee - EXTERN __divuchar - EXTERN __divuchar_callee - EXTERN __divuint - EXTERN __divuint_callee - EXTERN __divulong - EXTERN __divulong_callee - EXTERN __divulonglong - EXTERN __divulonglong_callee - EXTERN __divuschar - EXTERN __divuschar_callee - EXTERN __modschar - EXTERN __modschar_callee - EXTERN __modsint - EXTERN __modsint_callee - EXTERN __modslong - EXTERN __modslong_callee - EXTERN __modslonglong - EXTERN __modslonglong_callee - EXTERN __modsuchar - EXTERN __modsuchar_callee - EXTERN __moduchar - EXTERN __moduchar_callee - EXTERN __moduint - EXTERN __moduint_callee - EXTERN __modulong - EXTERN __modulong_callee - EXTERN __modulonglong - EXTERN __modulonglong_callee - EXTERN __moduschar - EXTERN __moduschar_callee - EXTERN __mulint - EXTERN __mulint_callee - EXTERN __mullong - EXTERN __mullong_callee - EXTERN __mullonglong - EXTERN __mullonglong_callee - EXTERN __mulschar - EXTERN __mulschar_callee - EXTERN __mulsuchar - EXTERN __mulsuchar_callee - EXTERN __muluchar - EXTERN __muluchar_callee - EXTERN __muluschar - EXTERN __muluschar_callee - EXTERN __rlslonglong - EXTERN __rlslonglong_callee - EXTERN __rlulonglong - EXTERN __rlulonglong_callee - EXTERN __rrslonglong - EXTERN __rrslonglong_callee - EXTERN __rrulonglong - EXTERN __rrulonglong_callee - EXTERN ___mulsint2slong - EXTERN ___mulsint2slong_callee - EXTERN ___muluint2ulong - EXTERN ___muluint2ulong_callee - EXTERN ___sdcc_call_hl - EXTERN ___sdcc_call_iy - EXTERN ___sdcc_enter_ix - EXTERN banked_call - EXTERN _banked_ret - EXTERN ___fs2schar - EXTERN ___fs2schar_callee - EXTERN ___fs2sint - EXTERN ___fs2sint_callee - EXTERN ___fs2slong - EXTERN ___fs2slong_callee - EXTERN ___fs2slonglong - EXTERN ___fs2slonglong_callee - EXTERN ___fs2uchar - EXTERN ___fs2uchar_callee - EXTERN ___fs2uint - EXTERN ___fs2uint_callee - EXTERN ___fs2ulong - EXTERN ___fs2ulong_callee - EXTERN ___fs2ulonglong - EXTERN ___fs2ulonglong_callee - EXTERN ___fsadd - EXTERN ___fsadd_callee - EXTERN ___fsdiv - EXTERN ___fsdiv_callee - EXTERN ___fseq - EXTERN ___fseq_callee - EXTERN ___fsgt - EXTERN ___fsgt_callee - EXTERN ___fslt - EXTERN ___fslt_callee - EXTERN ___fsmul - EXTERN ___fsmul_callee - EXTERN ___fsneq - EXTERN ___fsneq_callee - EXTERN ___fssub - EXTERN ___fssub_callee - EXTERN ___schar2fs - EXTERN ___schar2fs_callee - EXTERN ___sint2fs - EXTERN ___sint2fs_callee - EXTERN ___slong2fs - EXTERN ___slong2fs_callee - EXTERN ___slonglong2fs - EXTERN ___slonglong2fs_callee - EXTERN ___uchar2fs - EXTERN ___uchar2fs_callee - EXTERN ___uint2fs - EXTERN ___uint2fs_callee - EXTERN ___ulong2fs - EXTERN ___ulong2fs_callee - EXTERN ___ulonglong2fs - EXTERN ___ulonglong2fs_callee - EXTERN ____sdcc_2_copy_src_mhl_dst_deix - EXTERN ____sdcc_2_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_deix - EXTERN ____sdcc_4_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_mbc - EXTERN ____sdcc_4_ldi_nosave_bc - EXTERN ____sdcc_4_ldi_save_bc - EXTERN ____sdcc_4_push_hlix - EXTERN ____sdcc_4_push_mhl - EXTERN ____sdcc_lib_setmem_hl - EXTERN ____sdcc_ll_add_de_bc_hl - EXTERN ____sdcc_ll_add_de_bc_hlix - EXTERN ____sdcc_ll_add_de_hlix_bc - EXTERN ____sdcc_ll_add_de_hlix_bcix - EXTERN ____sdcc_ll_add_deix_bc_hl - EXTERN ____sdcc_ll_add_deix_hlix - EXTERN ____sdcc_ll_add_hlix_bc_deix - EXTERN ____sdcc_ll_add_hlix_deix_bc - EXTERN ____sdcc_ll_add_hlix_deix_bcix - EXTERN ____sdcc_ll_asr_hlix_a - EXTERN ____sdcc_ll_asr_mbc_a - EXTERN ____sdcc_ll_copy_src_de_dst_hlix - EXTERN ____sdcc_ll_copy_src_de_dst_hlsp - EXTERN ____sdcc_ll_copy_src_deix_dst_hl - EXTERN ____sdcc_ll_copy_src_deix_dst_hlix - EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp - EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp - EXTERN ____sdcc_ll_copy_src_hl_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm - EXTERN ____sdcc_ll_lsl_hlix_a - EXTERN ____sdcc_ll_lsl_mbc_a - EXTERN ____sdcc_ll_lsr_hlix_a - EXTERN ____sdcc_ll_lsr_mbc_a - EXTERN ____sdcc_ll_push_hlix - EXTERN ____sdcc_ll_push_mhl - EXTERN ____sdcc_ll_sub_de_bc_hl - EXTERN ____sdcc_ll_sub_de_bc_hlix - EXTERN ____sdcc_ll_sub_de_hlix_bc - EXTERN ____sdcc_ll_sub_de_hlix_bcix - EXTERN ____sdcc_ll_sub_deix_bc_hl - EXTERN ____sdcc_ll_sub_deix_hlix - EXTERN ____sdcc_ll_sub_hlix_bc_deix - EXTERN ____sdcc_ll_sub_hlix_deix_bc - EXTERN ____sdcc_ll_sub_hlix_deix_bcix - EXTERN ____sdcc_load_debc_deix - EXTERN ____sdcc_load_dehl_deix - EXTERN ____sdcc_load_debc_mhl - EXTERN ____sdcc_load_hlde_mhl - EXTERN ____sdcc_store_dehl_bcix - EXTERN ____sdcc_store_debc_hlix - EXTERN ____sdcc_store_debc_mhl - EXTERN ____sdcc_cpu_pop_ei - EXTERN ____sdcc_cpu_pop_ei_jp - EXTERN ____sdcc_cpu_push_di - EXTERN ____sdcc_outi - EXTERN ____sdcc_outi_128 - EXTERN ____sdcc_outi_256 - EXTERN ____sdcc_ldi - EXTERN ____sdcc_ldi_128 - EXTERN ____sdcc_ldi_256 - EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_dehl_dst_bcix - EXTERN ____sdcc_4_and_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_cpl_src_mhl_dst_debc - EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc - -;-------------------------------------------------------- -; Public variables in this module -;-------------------------------------------------------- - GLOBAL _ch_issue_token_out - GLOBAL _ch_issue_token_in - GLOBAL _ch_issue_token - GLOBAL _result - GLOBAL _ch_command - GLOBAL _ch_long_wait_int_and_get_status - GLOBAL _ch_short_wait_int_and_get_status - GLOBAL _ch_very_short_wait_int_and_get_status - GLOBAL _ch_get_status - GLOBAL _ch_cmd_reset_all - GLOBAL _ch_probe - GLOBAL _ch_cmd_set_usb_mode - GLOBAL _ch_cmd_get_ic_version - GLOBAL _ch_issue_token_out_ep0 - GLOBAL _ch_issue_token_in_ep0 - GLOBAL _ch_issue_token_setup - GLOBAL _ch_data_in_transfer - GLOBAL _ch_data_in_transfer_n - GLOBAL _ch_data_out_transfer - GLOBAL _ch_set_usb_address -;-------------------------------------------------------- -; Externals used -;-------------------------------------------------------- - GLOBAL _ch_wait_int_and_get_status - GLOBAL _print_uint16 - GLOBAL _print_string - GLOBAL _print_hex - GLOBAL _ch_control_transfer_set_config - GLOBAL _ch_control_transfer_set_address - GLOBAL _ch_control_transfer_request_descriptor - GLOBAL _ch_write_data - GLOBAL _ch_read_data - GLOBAL _delay_medium - GLOBAL _delay_short - GLOBAL _delay_20ms - GLOBAL _printf - GLOBAL _delay - GLOBAL _ulltoa_callee - GLOBAL _ulltoa - GLOBAL _strtoull_callee - GLOBAL _strtoull - GLOBAL _strtoll_callee - GLOBAL _strtoll - GLOBAL _lltoa_callee - GLOBAL _lltoa - GLOBAL _llabs_callee - GLOBAL _llabs - GLOBAL __lldivu__callee - GLOBAL __lldivu_ - GLOBAL __lldiv__callee - GLOBAL __lldiv_ - GLOBAL _atoll_callee - GLOBAL _atoll - GLOBAL _realloc_unlocked_callee - GLOBAL _realloc_unlocked - GLOBAL _malloc_unlocked_fastcall - GLOBAL _malloc_unlocked - GLOBAL _free_unlocked_fastcall - GLOBAL _free_unlocked - GLOBAL _calloc_unlocked_callee - GLOBAL _calloc_unlocked - GLOBAL _aligned_alloc_unlocked_callee - GLOBAL _aligned_alloc_unlocked - GLOBAL _realloc_callee - GLOBAL _realloc - GLOBAL _malloc_fastcall - GLOBAL _malloc - GLOBAL _free_fastcall - GLOBAL _free - GLOBAL _calloc_callee - GLOBAL _calloc - GLOBAL _aligned_alloc_callee - GLOBAL _aligned_alloc - GLOBAL _utoa_callee - GLOBAL _utoa - GLOBAL _ultoa_callee - GLOBAL _ultoa - GLOBAL _system_fastcall - GLOBAL _system - GLOBAL _strtoul_callee - GLOBAL _strtoul - GLOBAL _strtol_callee - GLOBAL _strtol - GLOBAL _strtof_callee - GLOBAL _strtof - GLOBAL _strtod_callee - GLOBAL _strtod - GLOBAL _srand_fastcall - GLOBAL _srand - GLOBAL _rand - GLOBAL _quick_exit_fastcall - GLOBAL _quick_exit - GLOBAL _qsort_callee - GLOBAL _qsort - GLOBAL _ltoa_callee - GLOBAL _ltoa - GLOBAL _labs_fastcall - GLOBAL _labs - GLOBAL _itoa_callee - GLOBAL _itoa - GLOBAL _ftoh_callee - GLOBAL _ftoh - GLOBAL _ftog_callee - GLOBAL _ftog - GLOBAL _ftoe_callee - GLOBAL _ftoe - GLOBAL _ftoa_callee - GLOBAL _ftoa - GLOBAL _exit_fastcall - GLOBAL _exit - GLOBAL _dtoh_callee - GLOBAL _dtoh - GLOBAL _dtog_callee - GLOBAL _dtog - GLOBAL _dtoe_callee - GLOBAL _dtoe - GLOBAL _dtoa_callee - GLOBAL _dtoa - GLOBAL _bsearch_callee - GLOBAL _bsearch - GLOBAL _atol_fastcall - GLOBAL _atol - GLOBAL _atoi_fastcall - GLOBAL _atoi - GLOBAL _atof_fastcall - GLOBAL _atof - GLOBAL _atexit_fastcall - GLOBAL _atexit - GLOBAL _at_quick_exit_fastcall - GLOBAL _at_quick_exit - GLOBAL _abs_fastcall - GLOBAL _abs - GLOBAL _abort - GLOBAL __strtou__callee - GLOBAL __strtou_ - GLOBAL __strtoi__callee - GLOBAL __strtoi_ - GLOBAL __random_uniform_xor_8__fastcall - GLOBAL __random_uniform_xor_8_ - GLOBAL __random_uniform_xor_32__fastcall - GLOBAL __random_uniform_xor_32_ - GLOBAL __random_uniform_cmwc_8__fastcall - GLOBAL __random_uniform_cmwc_8_ - GLOBAL __shellsort__callee - GLOBAL __shellsort_ - GLOBAL __quicksort__callee - GLOBAL __quicksort_ - GLOBAL __insertion_sort__callee - GLOBAL __insertion_sort_ - GLOBAL __ldivu__callee - GLOBAL __ldivu_ - GLOBAL __ldiv__callee - GLOBAL __ldiv_ - GLOBAL __divu__callee - GLOBAL __divu_ - GLOBAL __div__callee - GLOBAL __div_ -;-------------------------------------------------------- -; special function registers -;-------------------------------------------------------- -defc _CH376_DATA_PORT = 0xff88 -defc _CH376_COMMAND_PORT = 0xff89 -defc _USB_MODULE_LEDS = 0xff8a -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - SECTION bss_compiler -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - -IF 0 - -; .area _INITIALIZED removed by z88dk - -_result: - DEFS 1 - -ENDIF - -;-------------------------------------------------------- -; absolute external ram data -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; global & static initialisations -;-------------------------------------------------------- - SECTION code_crt_init -;-------------------------------------------------------- -; Home -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; code -;-------------------------------------------------------- - SECTION code_compiler -;source-doc/base-drv/ch376.c:8: void ch_command(const uint8_t command) __z88dk_fastcall { -; --------------------------------- -; Function ch_command -; --------------------------------- -_ch_command: -;source-doc/base-drv/ch376.c:10: while ((CH376_COMMAND_PORT & PARA_STATE_BUSY) && --counter != 0) - ld c,0xff -l_ch_command_00102: - ld a, +((_CH376_COMMAND_PORT) / 256) - in a, (((_CH376_COMMAND_PORT) & 0xFF)) - bit 4, a - jr Z,l_ch_command_00104 - dec c - jr NZ,l_ch_command_00102 -l_ch_command_00104: -;source-doc/base-drv/ch376.c:21: CH376_COMMAND_PORT = command; - ld a, l - ld bc,_CH376_COMMAND_PORT - out (c),a -;source-doc/base-drv/ch376.c:22: } - ret -;source-doc/base-drv/ch376.c:26: usb_error ch_long_wait_int_and_get_status(void) { return ch_wait_int_and_get_status(5000); } -; --------------------------------- -; Function ch_long_wait_int_and_get_status -; --------------------------------- -_ch_long_wait_int_and_get_status: - ld hl,0x1388 - jp _ch_wait_int_and_get_status -;source-doc/base-drv/ch376.c:28: usb_error ch_short_wait_int_and_get_status(void) { return ch_wait_int_and_get_status(100); } -; --------------------------------- -; Function ch_short_wait_int_and_get_status -; --------------------------------- -_ch_short_wait_int_and_get_status: - ld hl,0x0064 - jp _ch_wait_int_and_get_status -;source-doc/base-drv/ch376.c:30: usb_error ch_very_short_wait_int_and_get_status(void) { return ch_wait_int_and_get_status(10); } -; --------------------------------- -; Function ch_very_short_wait_int_and_get_status -; --------------------------------- -_ch_very_short_wait_int_and_get_status: - ld hl,0x000a - jp _ch_wait_int_and_get_status -;source-doc/base-drv/ch376.c:32: usb_error ch_get_status(void) { -; --------------------------------- -; Function ch_get_status -; --------------------------------- -_ch_get_status: -;source-doc/base-drv/ch376.c:33: ch_command(CH_CMD_GET_STATUS); - ld l,0x22 - call _ch_command -;source-doc/base-drv/ch376.c:34: uint8_t ch_status = CH376_DATA_PORT; - ld a, +((_CH376_DATA_PORT) / 256) - in a, (((_CH376_DATA_PORT) & 0xFF)) -;source-doc/base-drv/ch376.c:36: if (ch_status >= USB_FILERR_MIN && ch_status <= USB_FILERR_MAX) - ld l,a - sub a,0x41 - jr C,l_ch_get_status_00102 - ld a,0xb4 - sub a, l -;source-doc/base-drv/ch376.c:37: return ch_status; - jr NC,l_ch_get_status_00126 -l_ch_get_status_00102: -;source-doc/base-drv/ch376.c:39: if (ch_status == CH_CMD_RET_SUCCESS) - ld a, l -;source-doc/base-drv/ch376.c:40: return USB_ERR_OK; - sub a,0x51 - jr NZ,l_ch_get_status_00105 - ld l,a - jr l_ch_get_status_00126 -l_ch_get_status_00105: -;source-doc/base-drv/ch376.c:42: if (ch_status == CH_USB_INT_SUCCESS) - ld a, l -;source-doc/base-drv/ch376.c:43: return USB_ERR_OK; - sub a,0x14 - jr NZ,l_ch_get_status_00107 - ld l,a - jr l_ch_get_status_00126 -l_ch_get_status_00107: -;source-doc/base-drv/ch376.c:45: if (ch_status == CH_USB_INT_CONNECT) - ld a, l - sub a,0x15 - jr NZ,l_ch_get_status_00109 -;source-doc/base-drv/ch376.c:46: return USB_INT_CONNECT; - ld l,0x81 - jr l_ch_get_status_00126 -l_ch_get_status_00109: -;source-doc/base-drv/ch376.c:48: if (ch_status == CH_USB_INT_DISK_READ) - ld a, l - sub a,0x1d - jr NZ,l_ch_get_status_00111 -;source-doc/base-drv/ch376.c:49: return USB_ERR_DISK_READ; - ld l,0x1d - jr l_ch_get_status_00126 -l_ch_get_status_00111: -;source-doc/base-drv/ch376.c:51: if (ch_status == CH_USB_INT_DISK_WRITE) - ld a, l - sub a,0x1e - jr NZ,l_ch_get_status_00113 -;source-doc/base-drv/ch376.c:52: return USB_ERR_DISK_WRITE; - ld l,0x1e - jr l_ch_get_status_00126 -l_ch_get_status_00113: -;source-doc/base-drv/ch376.c:54: if (ch_status == CH_USB_INT_DISCONNECT) { - ld a, l - sub a,0x16 - jr NZ,l_ch_get_status_00115 -;source-doc/base-drv/ch376.c:55: ch_cmd_set_usb_mode(5); - ld l,0x05 - call _ch_cmd_set_usb_mode -;source-doc/base-drv/ch376.c:56: return USB_ERR_NO_DEVICE; - ld l,0x05 - jr l_ch_get_status_00126 -l_ch_get_status_00115: -;source-doc/base-drv/ch376.c:59: if (ch_status == CH_USB_INT_BUF_OVER) - ld a, l - sub a,0x17 - jr NZ,l_ch_get_status_00117 -;source-doc/base-drv/ch376.c:60: return USB_ERR_DATA_ERROR; - ld l,0x04 - jr l_ch_get_status_00126 -l_ch_get_status_00117: -;source-doc/base-drv/ch376.c:62: ch_status &= 0x2F; - ld a, l - and a,0x2f -;source-doc/base-drv/ch376.c:64: if (ch_status == 0x2A) - cp a,0x2a - jr NZ,l_ch_get_status_00119 -;source-doc/base-drv/ch376.c:65: return USB_ERR_NAK; - ld l,0x01 - jr l_ch_get_status_00126 -l_ch_get_status_00119: -;source-doc/base-drv/ch376.c:67: if (ch_status == 0x2E) - cp a,0x2e - jr NZ,l_ch_get_status_00121 -;source-doc/base-drv/ch376.c:68: return USB_ERR_STALL; - ld l,0x02 - jr l_ch_get_status_00126 -l_ch_get_status_00121: -;source-doc/base-drv/ch376.c:70: ch_status &= 0x23; - and a,0x23 -;source-doc/base-drv/ch376.c:72: if (ch_status == 0x20) - cp a,0x20 - jr NZ,l_ch_get_status_00123 -;source-doc/base-drv/ch376.c:73: return USB_ERR_TIMEOUT; - ld l,0x03 - jr l_ch_get_status_00126 -l_ch_get_status_00123: -;source-doc/base-drv/ch376.c:75: if (ch_status == 0x23) - sub a,0x23 - jr NZ,l_ch_get_status_00125 -;source-doc/base-drv/ch376.c:76: return USB_TOKEN_OUT_OF_SYNC; - ld l,0x07 - jr l_ch_get_status_00126 -l_ch_get_status_00125: -;source-doc/base-drv/ch376.c:78: return USB_ERR_UNEXPECTED_STATUS_FROM_HOST; - ld l,0x08 -l_ch_get_status_00126: -;source-doc/base-drv/ch376.c:79: } - ret -;source-doc/base-drv/ch376.c:81: void ch_cmd_reset_all(void) { ch_command(CH_CMD_RESET_ALL); } -; --------------------------------- -; Function ch_cmd_reset_all -; --------------------------------- -_ch_cmd_reset_all: - ld l,0x05 - jp _ch_command -;source-doc/base-drv/ch376.c:100: uint8_t ch_probe(void) { -; --------------------------------- -; Function ch_probe -; --------------------------------- -_ch_probe: - push ix - ld ix,0 - add ix,sp - dec sp -;source-doc/base-drv/ch376.c:102: do { - ld (ix-1),0x05 -l_ch_probe_00103: -;source-doc/base-drv/ch376.c:85: ch_command(CH_CMD_CHECK_EXIST); - ld l,0x06 - call _ch_command -;source-doc/base-drv/ch376.c:86: CH376_DATA_PORT = (uint8_t)~0x55; - ld a,0xaa - ld bc,_CH376_DATA_PORT - out (c),a -;source-doc/base-drv/ch376.c:87: delay(); - call _delay -;source-doc/base-drv/ch376.c:88: complement = CH376_DATA_PORT; - ld a, +((_CH376_DATA_PORT) / 256) - in a, (((_CH376_DATA_PORT) & 0xFF)) -;source-doc/base-drv/ch376.c:89: return complement == 0x55; - sub a,0x55 - jr NZ,l_ch_probe_00102 -;source-doc/base-drv/ch376.c:103: if (ch_cmd_check_exist()) -;source-doc/base-drv/ch376.c:104: return true; - ld l,0x01 - jr l_ch_probe_00107 -l_ch_probe_00102: -;source-doc/base-drv/ch376.c:106: delay_medium(); - call _delay_medium -;source-doc/base-drv/ch376.c:107: } while (--i != 0); - dec (ix-1) - jr NZ,l_ch_probe_00103 -;source-doc/base-drv/ch376.c:109: return false; - ld l,0x00 -l_ch_probe_00107: -;source-doc/base-drv/ch376.c:110: } - inc sp - pop ix - ret -;source-doc/base-drv/ch376.c:112: uint8_t ch_cmd_set_usb_mode(const uint8_t mode) __z88dk_fastcall { -; --------------------------------- -; Function ch_cmd_set_usb_mode -; --------------------------------- -_ch_cmd_set_usb_mode: - ld c, l -;source-doc/base-drv/ch376.c:113: uint8_t result = 0; - ld b,0x00 -;source-doc/base-drv/ch376.c:115: CH376_COMMAND_PORT = CH_CMD_SET_USB_MODE; - ld a,0x15 - push bc - ld bc,_CH376_COMMAND_PORT - out (c),a - call _delay - pop bc -;source-doc/base-drv/ch376.c:117: CH376_DATA_PORT = mode; - ld a, c - push bc - ld bc,_CH376_DATA_PORT - out (c),a - call _delay - pop bc -;source-doc/base-drv/ch376.c:122: while (result != CH_CMD_RET_SUCCESS && result != CH_CMD_RET_ABORT && --count != 0) { - ld c,0x7f -l_ch_cmd_set_usb_mode_00103: - ld a, b - sub a,0x51 - jr NZ,l_ch_cmd_set_usb_mode_00146 - ld a,0x01 - jr l_ch_cmd_set_usb_mode_00147 -l_ch_cmd_set_usb_mode_00146: - xor a,a -l_ch_cmd_set_usb_mode_00147: - ld e,a - bit 0,a - jr NZ,l_ch_cmd_set_usb_mode_00105 - ld a, b - sub a,0x5f - jr Z,l_ch_cmd_set_usb_mode_00105 - dec c - jr Z,l_ch_cmd_set_usb_mode_00105 -;source-doc/base-drv/ch376.c:123: result = CH376_DATA_PORT; - ld a, +((_CH376_DATA_PORT) / 256) - in a, (((_CH376_DATA_PORT) & 0xFF)) - ld b, a -;source-doc/base-drv/ch376.c:124: delay(); - push bc - call _delay - pop bc - jr l_ch_cmd_set_usb_mode_00103 -l_ch_cmd_set_usb_mode_00105: -;source-doc/base-drv/ch376.c:127: return (result == CH_CMD_RET_SUCCESS) ? USB_ERR_OK : USB_ERR_FAIL; - ld a, e - or a, a - jr Z,l_ch_cmd_set_usb_mode_00108 - ld l,0x00 - jr l_ch_cmd_set_usb_mode_00109 -l_ch_cmd_set_usb_mode_00108: - ld l,0x0e -l_ch_cmd_set_usb_mode_00109: -;source-doc/base-drv/ch376.c:128: } - ret -;source-doc/base-drv/ch376.c:130: uint8_t ch_cmd_get_ic_version(void) { -; --------------------------------- -; Function ch_cmd_get_ic_version -; --------------------------------- -_ch_cmd_get_ic_version: -;source-doc/base-drv/ch376.c:131: ch_command(CH_CMD_GET_IC_VER); - ld l,0x01 - call _ch_command -;source-doc/base-drv/ch376.c:132: return CH376_DATA_PORT & 0x1f; - ld a, +((_CH376_DATA_PORT) / 256) - in a, (((_CH376_DATA_PORT) & 0xFF)) - and a,0x1f - ld l, a -;source-doc/base-drv/ch376.c:133: } - ret -;source-doc/base-drv/ch376.c:135: void ch_issue_token(const uint8_t toggle_bit, const uint8_t endpoint, const ch376_pid pid) { -; --------------------------------- -; Function ch_issue_token -; --------------------------------- -_ch_issue_token: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/ch376.c:136: ch_command(CH_CMD_ISSUE_TKN_X); - ld l,0x4e - call _ch_command -;source-doc/base-drv/ch376.c:137: CH376_DATA_PORT = toggle_bit; - ld a,(ix+4) - ld bc,_CH376_DATA_PORT - out (c),a -;source-doc/base-drv/ch376.c:138: CH376_DATA_PORT = endpoint << 4 | pid; - ld a,(ix+5) - add a, a - add a, a - add a, a - add a, a - or a,(ix+6) - ld bc,_CH376_DATA_PORT - out (c),a -;source-doc/base-drv/ch376.c:139: } - pop ix - ret -;source-doc/base-drv/ch376.c:141: void ch_issue_token_in(const endpoint_param *const endpoint) __z88dk_fastcall { -; --------------------------------- -; Function ch_issue_token_in -; --------------------------------- -_ch_issue_token_in: -;source-doc/base-drv/ch376.c:142: ch_issue_token(endpoint->toggle ? 0x80 : 0x00, endpoint->number, CH_PID_IN); - ld e,l - ld d,h - ld a, (hl) - rrca - and a,0x07 - ld b, a - ex de, hl - ld a, (hl) - and a,0x01 - jr Z,l_ch_issue_token_in_00103 - ld a,0x80 - jr l_ch_issue_token_in_00104 -l_ch_issue_token_in_00103: - xor a, a -l_ch_issue_token_in_00104: - ld h,0x09 - ld l,b - push hl - push af - inc sp - call _ch_issue_token - pop af - inc sp -;source-doc/base-drv/ch376.c:143: } - ret -;source-doc/base-drv/ch376.c:145: void ch_issue_token_out(const endpoint_param *const endpoint) __z88dk_fastcall { -; --------------------------------- -; Function ch_issue_token_out -; --------------------------------- -_ch_issue_token_out: -;source-doc/base-drv/ch376.c:146: ch_issue_token(endpoint->toggle ? 0x40 : 0x00, endpoint->number, CH_PID_OUT); - ld e,l - ld d,h - ld a, (hl) - rrca - and a,0x07 - ld b, a - ex de, hl - ld a, (hl) - and a,0x01 - jr Z,l_ch_issue_token_out_00103 - ld a,0x40 - jr l_ch_issue_token_out_00104 -l_ch_issue_token_out_00103: - xor a, a -l_ch_issue_token_out_00104: - ld h,0x01 - ld l,b - push hl - push af - inc sp - call _ch_issue_token - pop af - inc sp -;source-doc/base-drv/ch376.c:147: } - ret -;source-doc/base-drv/ch376.c:149: void ch_issue_token_out_ep0(void) { ch_issue_token(0x40, 0, CH_PID_OUT); } -; --------------------------------- -; Function ch_issue_token_out_ep0 -; --------------------------------- -_ch_issue_token_out_ep0: - ld a,0x01 - push af - inc sp - xor a, a - ld d,a - ld e,0x40 - push de - call _ch_issue_token - pop af - inc sp - ret -;source-doc/base-drv/ch376.c:151: void ch_issue_token_in_ep0(void) { ch_issue_token(0x80, 0, CH_PID_IN); } -; --------------------------------- -; Function ch_issue_token_in_ep0 -; --------------------------------- -_ch_issue_token_in_ep0: - ld a,0x09 - push af - inc sp - xor a, a - ld d,a - ld e,0x80 - push de - call _ch_issue_token - pop af - inc sp - ret -;source-doc/base-drv/ch376.c:153: void ch_issue_token_setup(void) { ch_issue_token(0, 0, CH_PID_SETUP); } -; --------------------------------- -; Function ch_issue_token_setup -; --------------------------------- -_ch_issue_token_setup: - ld a,0x0d - push af - inc sp - xor a, a - push af - inc sp - xor a, a - push af - inc sp - call _ch_issue_token - pop af - inc sp - ret -;source-doc/base-drv/ch376.c:155: usb_error ch_data_in_transfer(uint8_t *buffer, int16_t buffer_size, endpoint_param *const endpoint) { -; --------------------------------- -; Function ch_data_in_transfer -; --------------------------------- -_ch_data_in_transfer: - push ix - ld ix,0 - add ix,sp - push af -;source-doc/base-drv/ch376.c:158: if (buffer_size == 0) - ld a,(ix+7) - or a,(ix+6) - jr NZ,l_ch_data_in_transfer_00102 -;source-doc/base-drv/ch376.c:159: return USB_ERR_OK; - ld l,0x00 - jp l_ch_data_in_transfer_00111 -l_ch_data_in_transfer_00102: -;source-doc/base-drv/ch376.c:161: USB_MODULE_LEDS = 0x01; - ld a,0x01 - ld bc,_USB_MODULE_LEDS - out (c),a -;source-doc/base-drv/ch376.c:162: do { - ld c,(ix+8) - ld b,(ix+9) - pop de - push bc -l_ch_data_in_transfer_00107: -;source-doc/base-drv/ch376.c:163: ch_issue_token_in(endpoint); - ld l,c - ld h,b - push hl - call _ch_issue_token_in - call _ch_long_wait_int_and_get_status - pop bc - ld a, l - ld (_result), a -;source-doc/base-drv/ch376.c:166: CHECK(result); - ld a,(_result) - or a, a - jr NZ,l_ch_data_in_transfer_00110 -;source-doc/base-drv/ch376.c:168: endpoint->toggle = !endpoint->toggle; - ld e, c - ld d, b - pop hl - ld a,(hl) - push hl - and a,0x01 - xor a,0x01 - and a,0x01 - ld l, a - ld a, (de) - and a,0xfe - or a, l - ld (de), a -;source-doc/base-drv/ch376.c:170: count = ch_read_data(buffer); - push bc - ld l,(ix+4) - ld h,(ix+5) - call _ch_read_data - ld e, a - pop bc -;source-doc/base-drv/ch376.c:172: if (count == 0) { - ld a, e -;source-doc/base-drv/ch376.c:173: USB_MODULE_LEDS = 0x00; - or a,a - jr NZ,l_ch_data_in_transfer_00106 - ld bc,_USB_MODULE_LEDS - out (c),a -;source-doc/base-drv/ch376.c:174: return USB_ERR_DATA_ERROR; - ld l,0x04 - jr l_ch_data_in_transfer_00111 -l_ch_data_in_transfer_00106: -;source-doc/base-drv/ch376.c:177: buffer += count; - ld a,(ix+4) - add a, e - ld (ix+4),a - jr NC,l_ch_data_in_transfer_00148 - inc (ix+5) -l_ch_data_in_transfer_00148: -;source-doc/base-drv/ch376.c:178: buffer_size -= count; - ld d,0x00 - ld a,(ix+6) - sub a, e - ld (ix+6),a - ld a,(ix+7) - sbc a, d - ld (ix+7),a -;source-doc/base-drv/ch376.c:179: } while (buffer_size > 0); - xor a, a - cp a,(ix+6) - sbc a,(ix+7) - jp PO, l_ch_data_in_transfer_00149 - xor a,0x80 -l_ch_data_in_transfer_00149: - jp M, l_ch_data_in_transfer_00107 -;source-doc/base-drv/ch376.c:181: USB_MODULE_LEDS = 0x00; - ld a,0x00 - ld bc,_USB_MODULE_LEDS - out (c),a -;source-doc/base-drv/ch376.c:183: return USB_ERR_OK; - ld l,0x00 - jr l_ch_data_in_transfer_00111 -;source-doc/base-drv/ch376.c:184: done: -l_ch_data_in_transfer_00110: -;source-doc/base-drv/ch376.c:185: return result; - ld hl,(_result) - ld h,+((_result) / 256) -l_ch_data_in_transfer_00111: -;source-doc/base-drv/ch376.c:186: } - ld sp, ix - pop ix - ret -;source-doc/base-drv/ch376.c:188: usb_error ch_data_in_transfer_n(uint8_t *const buffer, int8_t *const buffer_size, endpoint_param *const endpoint) { -; --------------------------------- -; Function ch_data_in_transfer_n -; --------------------------------- -_ch_data_in_transfer_n: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/ch376.c:192: USB_MODULE_LEDS = 0x01; - ld a,0x01 - ld bc,_USB_MODULE_LEDS - out (c),a -;source-doc/base-drv/ch376.c:194: ch_issue_token_in(endpoint); - ld l,(ix+8) - ld h,(ix+9) - call _ch_issue_token_in -;source-doc/base-drv/ch376.c:196: CHECK(ch_long_wait_int_and_get_status()); - call _ch_long_wait_int_and_get_status - ld a, l - ld b, a - or a, a - jr NZ,l_ch_data_in_transfer_n_00103 -;source-doc/base-drv/ch376.c:198: endpoint->toggle = !endpoint->toggle; - ld e,(ix+8) - ld d,(ix+9) - ld c, e - ld b, d - ex de, hl - ld a, (hl) - and a,0x01 - xor a,0x01 - and a,0x01 - ld e, a - ld a, (bc) - and a,0xfe - or a, e - ld (bc), a -;source-doc/base-drv/ch376.c:200: count = ch_read_data(buffer); - ld l,(ix+4) - ld h,(ix+5) - call _ch_read_data -;source-doc/base-drv/ch376.c:202: *buffer_size = count; - ld c,(ix+6) - ld b,(ix+7) - ld (bc), a -;source-doc/base-drv/ch376.c:204: USB_MODULE_LEDS = 0x00; - ld a,0x00 - ld bc,_USB_MODULE_LEDS - out (c),a -;source-doc/base-drv/ch376.c:206: return USB_ERR_OK; - ld l,0x00 - jr l_ch_data_in_transfer_n_00104 -;source-doc/base-drv/ch376.c:207: done: -l_ch_data_in_transfer_n_00103: -;source-doc/base-drv/ch376.c:208: return result; - ld l, b -l_ch_data_in_transfer_n_00104: -;source-doc/base-drv/ch376.c:209: } - pop ix - ret -;source-doc/base-drv/ch376.c:211: usb_error ch_data_out_transfer(const uint8_t *buffer, int16_t buffer_length, endpoint_param *const endpoint) { -; --------------------------------- -; Function ch_data_out_transfer -; --------------------------------- -_ch_data_out_transfer: - push ix - ld ix,0 - add ix,sp - push af - dec sp -;source-doc/base-drv/ch376.c:214: const uint8_t max_packet_size = calc_max_packet_size(endpoint->max_packet_sizex); - ld c,(ix+8) - ld b,(ix+9) - ld e, c - ld d, b - inc de - ld a, (de) - ld (ix-3),a -;source-doc/base-drv/ch376.c:216: USB_MODULE_LEDS = 0x02; - ld a,0x02 - push bc - ld bc,_USB_MODULE_LEDS - out (c),a - pop bc -;source-doc/base-drv/ch376.c:218: while (buffer_length > 0) { - ld (ix-2),c - ld (ix-1),b -l_ch_data_out_transfer_00103: - xor a, a - cp a,(ix+6) - sbc a,(ix+7) - jp PO, l_ch_data_out_transfer_00139 - xor a,0x80 -l_ch_data_out_transfer_00139: - jp P, l_ch_data_out_transfer_00105 -;source-doc/base-drv/ch376.c:219: const uint8_t size = max_packet_size < buffer_length ? max_packet_size : buffer_length; - ld d,(ix-3) - ld e,0x00 - ld a, d - sub a,(ix+6) - ld a, e - sbc a,(ix+7) - jp PO, l_ch_data_out_transfer_00140 - xor a,0x80 -l_ch_data_out_transfer_00140: - jp P, l_ch_data_out_transfer_00109 - jr l_ch_data_out_transfer_00110 -l_ch_data_out_transfer_00109: - ld d,(ix+6) - ld e,(ix+7) -l_ch_data_out_transfer_00110: -;source-doc/base-drv/ch376.c:220: buffer = ch_write_data(buffer, size); - push bc - push de - push de - inc sp - ld l,(ix+4) - ld h,(ix+5) - push hl - call _ch_write_data - pop af - inc sp - pop de - pop bc - ld (ix+4),l - ld (ix+5),h -;source-doc/base-drv/ch376.c:221: buffer_length -= size; - ld e,0x00 - ld a,(ix+6) - sub a, d - ld (ix+6),a - ld a,(ix+7) - sbc a, e - ld (ix+7),a -;source-doc/base-drv/ch376.c:222: ch_issue_token_out(endpoint); - ld l,c - ld h,b - push hl - call _ch_issue_token_out - call _ch_long_wait_int_and_get_status - ld a, l - pop bc - ld l, a - or a, a - jr NZ,l_ch_data_out_transfer_00106 -;source-doc/base-drv/ch376.c:226: endpoint->toggle = !endpoint->toggle; - ld e, c - ld d, b - ld l,(ix-2) - ld h,(ix-1) - ld a, (hl) - and a,0x01 - xor a,0x01 - and a,0x01 - ld l, a - ld a, (de) - and a,0xfe - or a, l - ld (de), a - jr l_ch_data_out_transfer_00103 -l_ch_data_out_transfer_00105: -;source-doc/base-drv/ch376.c:229: USB_MODULE_LEDS = 0x00; - ld a,0x00 - ld bc,_USB_MODULE_LEDS - out (c),a -;source-doc/base-drv/ch376.c:231: return USB_ERR_OK; - ld l,0x00 -;source-doc/base-drv/ch376.c:232: done: -;source-doc/base-drv/ch376.c:233: return result; -l_ch_data_out_transfer_00106: -;source-doc/base-drv/ch376.c:234: } - ld sp, ix - pop ix - ret -;source-doc/base-drv/ch376.c:236: void ch_set_usb_address(const uint8_t device_address) __z88dk_fastcall { -; --------------------------------- -; Function ch_set_usb_address -; --------------------------------- -_ch_set_usb_address: -;source-doc/base-drv/ch376.c:237: ch_command(CH_CMD_SET_USB_ADDR); - push hl - ld l,0x13 - call _ch_command - pop hl -;source-doc/base-drv/ch376.c:238: CH376_DATA_PORT = device_address; - ld a, l - ld bc,_CH376_DATA_PORT - out (c),a -;source-doc/base-drv/ch376.c:239: } - ret - SECTION data_compiler -_result: - DEFB +0x00 - SECTION IGNORE diff --git a/Source/HBIOS/ch376-native/base-drv/class_hub.c.asm b/Source/HBIOS/ch376-native/base-drv/class_hub.c.asm deleted file mode 100644 index 15506295..00000000 --- a/Source/HBIOS/ch376-native/base-drv/class_hub.c.asm +++ /dev/null @@ -1,458 +0,0 @@ -;-------------------------------------------------------- -; File Created by SDCC : free open source ISO C Compiler -; Version 4.4.0 #14648 (Linux) -;-------------------------------------------------------- -; Processed by Z88DK -;-------------------------------------------------------- - - EXTERN __divschar - EXTERN __divschar_callee - EXTERN __divsint - EXTERN __divsint_callee - EXTERN __divslong - EXTERN __divslong_callee - EXTERN __divslonglong - EXTERN __divslonglong_callee - EXTERN __divsuchar - EXTERN __divsuchar_callee - EXTERN __divuchar - EXTERN __divuchar_callee - EXTERN __divuint - EXTERN __divuint_callee - EXTERN __divulong - EXTERN __divulong_callee - EXTERN __divulonglong - EXTERN __divulonglong_callee - EXTERN __divuschar - EXTERN __divuschar_callee - EXTERN __modschar - EXTERN __modschar_callee - EXTERN __modsint - EXTERN __modsint_callee - EXTERN __modslong - EXTERN __modslong_callee - EXTERN __modslonglong - EXTERN __modslonglong_callee - EXTERN __modsuchar - EXTERN __modsuchar_callee - EXTERN __moduchar - EXTERN __moduchar_callee - EXTERN __moduint - EXTERN __moduint_callee - EXTERN __modulong - EXTERN __modulong_callee - EXTERN __modulonglong - EXTERN __modulonglong_callee - EXTERN __moduschar - EXTERN __moduschar_callee - EXTERN __mulint - EXTERN __mulint_callee - EXTERN __mullong - EXTERN __mullong_callee - EXTERN __mullonglong - EXTERN __mullonglong_callee - EXTERN __mulschar - EXTERN __mulschar_callee - EXTERN __mulsuchar - EXTERN __mulsuchar_callee - EXTERN __muluchar - EXTERN __muluchar_callee - EXTERN __muluschar - EXTERN __muluschar_callee - EXTERN __rlslonglong - EXTERN __rlslonglong_callee - EXTERN __rlulonglong - EXTERN __rlulonglong_callee - EXTERN __rrslonglong - EXTERN __rrslonglong_callee - EXTERN __rrulonglong - EXTERN __rrulonglong_callee - EXTERN ___mulsint2slong - EXTERN ___mulsint2slong_callee - EXTERN ___muluint2ulong - EXTERN ___muluint2ulong_callee - EXTERN ___sdcc_call_hl - EXTERN ___sdcc_call_iy - EXTERN ___sdcc_enter_ix - EXTERN banked_call - EXTERN _banked_ret - EXTERN ___fs2schar - EXTERN ___fs2schar_callee - EXTERN ___fs2sint - EXTERN ___fs2sint_callee - EXTERN ___fs2slong - EXTERN ___fs2slong_callee - EXTERN ___fs2slonglong - EXTERN ___fs2slonglong_callee - EXTERN ___fs2uchar - EXTERN ___fs2uchar_callee - EXTERN ___fs2uint - EXTERN ___fs2uint_callee - EXTERN ___fs2ulong - EXTERN ___fs2ulong_callee - EXTERN ___fs2ulonglong - EXTERN ___fs2ulonglong_callee - EXTERN ___fsadd - EXTERN ___fsadd_callee - EXTERN ___fsdiv - EXTERN ___fsdiv_callee - EXTERN ___fseq - EXTERN ___fseq_callee - EXTERN ___fsgt - EXTERN ___fsgt_callee - EXTERN ___fslt - EXTERN ___fslt_callee - EXTERN ___fsmul - EXTERN ___fsmul_callee - EXTERN ___fsneq - EXTERN ___fsneq_callee - EXTERN ___fssub - EXTERN ___fssub_callee - EXTERN ___schar2fs - EXTERN ___schar2fs_callee - EXTERN ___sint2fs - EXTERN ___sint2fs_callee - EXTERN ___slong2fs - EXTERN ___slong2fs_callee - EXTERN ___slonglong2fs - EXTERN ___slonglong2fs_callee - EXTERN ___uchar2fs - EXTERN ___uchar2fs_callee - EXTERN ___uint2fs - EXTERN ___uint2fs_callee - EXTERN ___ulong2fs - EXTERN ___ulong2fs_callee - EXTERN ___ulonglong2fs - EXTERN ___ulonglong2fs_callee - EXTERN ____sdcc_2_copy_src_mhl_dst_deix - EXTERN ____sdcc_2_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_deix - EXTERN ____sdcc_4_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_mbc - EXTERN ____sdcc_4_ldi_nosave_bc - EXTERN ____sdcc_4_ldi_save_bc - EXTERN ____sdcc_4_push_hlix - EXTERN ____sdcc_4_push_mhl - EXTERN ____sdcc_lib_setmem_hl - EXTERN ____sdcc_ll_add_de_bc_hl - EXTERN ____sdcc_ll_add_de_bc_hlix - EXTERN ____sdcc_ll_add_de_hlix_bc - EXTERN ____sdcc_ll_add_de_hlix_bcix - EXTERN ____sdcc_ll_add_deix_bc_hl - EXTERN ____sdcc_ll_add_deix_hlix - EXTERN ____sdcc_ll_add_hlix_bc_deix - EXTERN ____sdcc_ll_add_hlix_deix_bc - EXTERN ____sdcc_ll_add_hlix_deix_bcix - EXTERN ____sdcc_ll_asr_hlix_a - EXTERN ____sdcc_ll_asr_mbc_a - EXTERN ____sdcc_ll_copy_src_de_dst_hlix - EXTERN ____sdcc_ll_copy_src_de_dst_hlsp - EXTERN ____sdcc_ll_copy_src_deix_dst_hl - EXTERN ____sdcc_ll_copy_src_deix_dst_hlix - EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp - EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp - EXTERN ____sdcc_ll_copy_src_hl_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm - EXTERN ____sdcc_ll_lsl_hlix_a - EXTERN ____sdcc_ll_lsl_mbc_a - EXTERN ____sdcc_ll_lsr_hlix_a - EXTERN ____sdcc_ll_lsr_mbc_a - EXTERN ____sdcc_ll_push_hlix - EXTERN ____sdcc_ll_push_mhl - EXTERN ____sdcc_ll_sub_de_bc_hl - EXTERN ____sdcc_ll_sub_de_bc_hlix - EXTERN ____sdcc_ll_sub_de_hlix_bc - EXTERN ____sdcc_ll_sub_de_hlix_bcix - EXTERN ____sdcc_ll_sub_deix_bc_hl - EXTERN ____sdcc_ll_sub_deix_hlix - EXTERN ____sdcc_ll_sub_hlix_bc_deix - EXTERN ____sdcc_ll_sub_hlix_deix_bc - EXTERN ____sdcc_ll_sub_hlix_deix_bcix - EXTERN ____sdcc_load_debc_deix - EXTERN ____sdcc_load_dehl_deix - EXTERN ____sdcc_load_debc_mhl - EXTERN ____sdcc_load_hlde_mhl - EXTERN ____sdcc_store_dehl_bcix - EXTERN ____sdcc_store_debc_hlix - EXTERN ____sdcc_store_debc_mhl - EXTERN ____sdcc_cpu_pop_ei - EXTERN ____sdcc_cpu_pop_ei_jp - EXTERN ____sdcc_cpu_push_di - EXTERN ____sdcc_outi - EXTERN ____sdcc_outi_128 - EXTERN ____sdcc_outi_256 - EXTERN ____sdcc_ldi - EXTERN ____sdcc_ldi_128 - EXTERN ____sdcc_ldi_256 - EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_dehl_dst_bcix - EXTERN ____sdcc_4_and_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_cpl_src_mhl_dst_debc - EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc - -;-------------------------------------------------------- -; Public variables in this module -;-------------------------------------------------------- - GLOBAL _cmd_get_hub_descriptor - GLOBAL _hub_get_descriptor -;-------------------------------------------------------- -; Externals used -;-------------------------------------------------------- - GLOBAL _get_usb_device_config - GLOBAL _find_device_config - GLOBAL _next_device_config - GLOBAL _first_device_config - GLOBAL _find_first_free - GLOBAL _usbtrn_clear_endpoint_halt - GLOBAL _usbtrn_set_address - GLOBAL _usbtrn_set_configuration - GLOBAL _usbtrn_gfull_cfg_desc - GLOBAL _usbtrn_get_config_descriptor - GLOBAL _usbtrn_get_descriptor2 - GLOBAL _usbtrn_get_descriptor - GLOBAL _usbdev_dat_in_trnsfer_0 - GLOBAL _usbdev_dat_in_trnsfer - GLOBAL _usbdev_bulk_in_transfer - GLOBAL _usbdev_blk_out_trnsfer - GLOBAL _usbdev_control_transfer - GLOBAL _usb_data_out_transfer - GLOBAL _usb_data_in_transfer_n - GLOBAL _usb_data_in_transfer - GLOBAL _usb_control_transfer - GLOBAL _ch_issue_token_in_ep0 - GLOBAL _ch_issue_token_out_ep0 - GLOBAL _ch_issue_token_setup - GLOBAL _ch_data_out_transfer - GLOBAL _ch_data_in_transfer_n - GLOBAL _ch_data_in_transfer - GLOBAL _ch_control_transfer_set_config - GLOBAL _ch_control_transfer_set_address - GLOBAL _ch_control_transfer_request_descriptor - GLOBAL _ch_set_usb_address - GLOBAL _ch_write_data - GLOBAL _ch_cmd_get_ic_version - GLOBAL _ch_cmd_set_usb_mode - GLOBAL _ch_probe - GLOBAL _ch_cmd_reset_all - GLOBAL _ch_read_data - GLOBAL _ch_very_short_wait_int_and_get_status - GLOBAL _ch_short_wait_int_and_get_status - GLOBAL _ch_long_wait_int_and_get_status - GLOBAL _ch_get_status - GLOBAL _ch_command - GLOBAL _delay_medium - GLOBAL _delay_short - GLOBAL _delay_20ms - GLOBAL _printf - GLOBAL _delay - GLOBAL _ulltoa_callee - GLOBAL _ulltoa - GLOBAL _strtoull_callee - GLOBAL _strtoull - GLOBAL _strtoll_callee - GLOBAL _strtoll - GLOBAL _lltoa_callee - GLOBAL _lltoa - GLOBAL _llabs_callee - GLOBAL _llabs - GLOBAL __lldivu__callee - GLOBAL __lldivu_ - GLOBAL __lldiv__callee - GLOBAL __lldiv_ - GLOBAL _atoll_callee - GLOBAL _atoll - GLOBAL _realloc_unlocked_callee - GLOBAL _realloc_unlocked - GLOBAL _malloc_unlocked_fastcall - GLOBAL _malloc_unlocked - GLOBAL _free_unlocked_fastcall - GLOBAL _free_unlocked - GLOBAL _calloc_unlocked_callee - GLOBAL _calloc_unlocked - GLOBAL _aligned_alloc_unlocked_callee - GLOBAL _aligned_alloc_unlocked - GLOBAL _realloc_callee - GLOBAL _realloc - GLOBAL _malloc_fastcall - GLOBAL _malloc - GLOBAL _free_fastcall - GLOBAL _free - GLOBAL _calloc_callee - GLOBAL _calloc - GLOBAL _aligned_alloc_callee - GLOBAL _aligned_alloc - GLOBAL _utoa_callee - GLOBAL _utoa - GLOBAL _ultoa_callee - GLOBAL _ultoa - GLOBAL _system_fastcall - GLOBAL _system - GLOBAL _strtoul_callee - GLOBAL _strtoul - GLOBAL _strtol_callee - GLOBAL _strtol - GLOBAL _strtof_callee - GLOBAL _strtof - GLOBAL _strtod_callee - GLOBAL _strtod - GLOBAL _srand_fastcall - GLOBAL _srand - GLOBAL _rand - GLOBAL _quick_exit_fastcall - GLOBAL _quick_exit - GLOBAL _qsort_callee - GLOBAL _qsort - GLOBAL _ltoa_callee - GLOBAL _ltoa - GLOBAL _labs_fastcall - GLOBAL _labs - GLOBAL _itoa_callee - GLOBAL _itoa - GLOBAL _ftoh_callee - GLOBAL _ftoh - GLOBAL _ftog_callee - GLOBAL _ftog - GLOBAL _ftoe_callee - GLOBAL _ftoe - GLOBAL _ftoa_callee - GLOBAL _ftoa - GLOBAL _exit_fastcall - GLOBAL _exit - GLOBAL _dtoh_callee - GLOBAL _dtoh - GLOBAL _dtog_callee - GLOBAL _dtog - GLOBAL _dtoe_callee - GLOBAL _dtoe - GLOBAL _dtoa_callee - GLOBAL _dtoa - GLOBAL _bsearch_callee - GLOBAL _bsearch - GLOBAL _atol_fastcall - GLOBAL _atol - GLOBAL _atoi_fastcall - GLOBAL _atoi - GLOBAL _atof_fastcall - GLOBAL _atof - GLOBAL _atexit_fastcall - GLOBAL _atexit - GLOBAL _at_quick_exit_fastcall - GLOBAL _at_quick_exit - GLOBAL _abs_fastcall - GLOBAL _abs - GLOBAL _abort - GLOBAL __strtou__callee - GLOBAL __strtou_ - GLOBAL __strtoi__callee - GLOBAL __strtoi_ - GLOBAL __random_uniform_xor_8__fastcall - GLOBAL __random_uniform_xor_8_ - GLOBAL __random_uniform_xor_32__fastcall - GLOBAL __random_uniform_xor_32_ - GLOBAL __random_uniform_cmwc_8__fastcall - GLOBAL __random_uniform_cmwc_8_ - GLOBAL __shellsort__callee - GLOBAL __shellsort_ - GLOBAL __quicksort__callee - GLOBAL __quicksort_ - GLOBAL __insertion_sort__callee - GLOBAL __insertion_sort_ - GLOBAL __ldivu__callee - GLOBAL __ldivu_ - GLOBAL __ldiv__callee - GLOBAL __ldiv_ - GLOBAL __divu__callee - GLOBAL __divu_ - GLOBAL __div__callee - GLOBAL __div_ - GLOBAL _result -;-------------------------------------------------------- -; special function registers -;-------------------------------------------------------- -defc _CH376_DATA_PORT = 0xff88 -defc _CH376_COMMAND_PORT = 0xff89 -defc _USB_MODULE_LEDS = 0xff8a -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - SECTION bss_compiler -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - -IF 0 - -; .area _INITIALIZED removed by z88dk - - -ENDIF - -;-------------------------------------------------------- -; absolute external ram data -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; global & static initialisations -;-------------------------------------------------------- - SECTION code_crt_init -;-------------------------------------------------------- -; Home -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; code -;-------------------------------------------------------- - SECTION code_compiler -;source-doc/base-drv/class_hub.c:7: usb_error hub_get_descriptor(const device_config_hub *const hub_config, hub_descriptor *const hub_description) __sdcccall(1) { -; --------------------------------- -; Function hub_get_descriptor -; --------------------------------- -_hub_get_descriptor: -;source-doc/base-drv/class_hub.c:8: return usb_control_transfer(&cmd_get_hub_descriptor, hub_description, hub_config->address, hub_config->max_packet_size); - ld a,l - ld c,h - inc hl - ld b, (hl) - ld l, a - ld h, c - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - ld c, a - push bc - push de - ld hl,_cmd_get_hub_descriptor - push hl - call _usb_control_transfer - pop af - pop af - pop af - ld a, l -;source-doc/base-drv/class_hub.c:9: } - ret - SECTION rodata_compiler -_cmd_get_hub_descriptor: - DEFB +0xa0 - DEFB +0x06 - DEFB +0x00 - DEFB +0x29 - DEFB +0x00 - DEFB +0x00 - DEFW +0x0008 - SECTION IGNORE diff --git a/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.asm b/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.asm deleted file mode 100644 index 0d971506..00000000 --- a/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.asm +++ /dev/null @@ -1,834 +0,0 @@ -;-------------------------------------------------------- -; File Created by SDCC : free open source ISO C Compiler -; Version 4.4.0 #14648 (Linux) -;-------------------------------------------------------- -; Processed by Z88DK -;-------------------------------------------------------- - - EXTERN __divschar - EXTERN __divschar_callee - EXTERN __divsint - EXTERN __divsint_callee - EXTERN __divslong - EXTERN __divslong_callee - EXTERN __divslonglong - EXTERN __divslonglong_callee - EXTERN __divsuchar - EXTERN __divsuchar_callee - EXTERN __divuchar - EXTERN __divuchar_callee - EXTERN __divuint - EXTERN __divuint_callee - EXTERN __divulong - EXTERN __divulong_callee - EXTERN __divulonglong - EXTERN __divulonglong_callee - EXTERN __divuschar - EXTERN __divuschar_callee - EXTERN __modschar - EXTERN __modschar_callee - EXTERN __modsint - EXTERN __modsint_callee - EXTERN __modslong - EXTERN __modslong_callee - EXTERN __modslonglong - EXTERN __modslonglong_callee - EXTERN __modsuchar - EXTERN __modsuchar_callee - EXTERN __moduchar - EXTERN __moduchar_callee - EXTERN __moduint - EXTERN __moduint_callee - EXTERN __modulong - EXTERN __modulong_callee - EXTERN __modulonglong - EXTERN __modulonglong_callee - EXTERN __moduschar - EXTERN __moduschar_callee - EXTERN __mulint - EXTERN __mulint_callee - EXTERN __mullong - EXTERN __mullong_callee - EXTERN __mullonglong - EXTERN __mullonglong_callee - EXTERN __mulschar - EXTERN __mulschar_callee - EXTERN __mulsuchar - EXTERN __mulsuchar_callee - EXTERN __muluchar - EXTERN __muluchar_callee - EXTERN __muluschar - EXTERN __muluschar_callee - EXTERN __rlslonglong - EXTERN __rlslonglong_callee - EXTERN __rlulonglong - EXTERN __rlulonglong_callee - EXTERN __rrslonglong - EXTERN __rrslonglong_callee - EXTERN __rrulonglong - EXTERN __rrulonglong_callee - EXTERN ___mulsint2slong - EXTERN ___mulsint2slong_callee - EXTERN ___muluint2ulong - EXTERN ___muluint2ulong_callee - EXTERN ___sdcc_call_hl - EXTERN ___sdcc_call_iy - EXTERN ___sdcc_enter_ix - EXTERN banked_call - EXTERN _banked_ret - EXTERN ___fs2schar - EXTERN ___fs2schar_callee - EXTERN ___fs2sint - EXTERN ___fs2sint_callee - EXTERN ___fs2slong - EXTERN ___fs2slong_callee - EXTERN ___fs2slonglong - EXTERN ___fs2slonglong_callee - EXTERN ___fs2uchar - EXTERN ___fs2uchar_callee - EXTERN ___fs2uint - EXTERN ___fs2uint_callee - EXTERN ___fs2ulong - EXTERN ___fs2ulong_callee - EXTERN ___fs2ulonglong - EXTERN ___fs2ulonglong_callee - EXTERN ___fsadd - EXTERN ___fsadd_callee - EXTERN ___fsdiv - EXTERN ___fsdiv_callee - EXTERN ___fseq - EXTERN ___fseq_callee - EXTERN ___fsgt - EXTERN ___fsgt_callee - EXTERN ___fslt - EXTERN ___fslt_callee - EXTERN ___fsmul - EXTERN ___fsmul_callee - EXTERN ___fsneq - EXTERN ___fsneq_callee - EXTERN ___fssub - EXTERN ___fssub_callee - EXTERN ___schar2fs - EXTERN ___schar2fs_callee - EXTERN ___sint2fs - EXTERN ___sint2fs_callee - EXTERN ___slong2fs - EXTERN ___slong2fs_callee - EXTERN ___slonglong2fs - EXTERN ___slonglong2fs_callee - EXTERN ___uchar2fs - EXTERN ___uchar2fs_callee - EXTERN ___uint2fs - EXTERN ___uint2fs_callee - EXTERN ___ulong2fs - EXTERN ___ulong2fs_callee - EXTERN ___ulonglong2fs - EXTERN ___ulonglong2fs_callee - EXTERN ____sdcc_2_copy_src_mhl_dst_deix - EXTERN ____sdcc_2_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_deix - EXTERN ____sdcc_4_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_mbc - EXTERN ____sdcc_4_ldi_nosave_bc - EXTERN ____sdcc_4_ldi_save_bc - EXTERN ____sdcc_4_push_hlix - EXTERN ____sdcc_4_push_mhl - EXTERN ____sdcc_lib_setmem_hl - EXTERN ____sdcc_ll_add_de_bc_hl - EXTERN ____sdcc_ll_add_de_bc_hlix - EXTERN ____sdcc_ll_add_de_hlix_bc - EXTERN ____sdcc_ll_add_de_hlix_bcix - EXTERN ____sdcc_ll_add_deix_bc_hl - EXTERN ____sdcc_ll_add_deix_hlix - EXTERN ____sdcc_ll_add_hlix_bc_deix - EXTERN ____sdcc_ll_add_hlix_deix_bc - EXTERN ____sdcc_ll_add_hlix_deix_bcix - EXTERN ____sdcc_ll_asr_hlix_a - EXTERN ____sdcc_ll_asr_mbc_a - EXTERN ____sdcc_ll_copy_src_de_dst_hlix - EXTERN ____sdcc_ll_copy_src_de_dst_hlsp - EXTERN ____sdcc_ll_copy_src_deix_dst_hl - EXTERN ____sdcc_ll_copy_src_deix_dst_hlix - EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp - EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp - EXTERN ____sdcc_ll_copy_src_hl_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm - EXTERN ____sdcc_ll_lsl_hlix_a - EXTERN ____sdcc_ll_lsl_mbc_a - EXTERN ____sdcc_ll_lsr_hlix_a - EXTERN ____sdcc_ll_lsr_mbc_a - EXTERN ____sdcc_ll_push_hlix - EXTERN ____sdcc_ll_push_mhl - EXTERN ____sdcc_ll_sub_de_bc_hl - EXTERN ____sdcc_ll_sub_de_bc_hlix - EXTERN ____sdcc_ll_sub_de_hlix_bc - EXTERN ____sdcc_ll_sub_de_hlix_bcix - EXTERN ____sdcc_ll_sub_deix_bc_hl - EXTERN ____sdcc_ll_sub_deix_hlix - EXTERN ____sdcc_ll_sub_hlix_bc_deix - EXTERN ____sdcc_ll_sub_hlix_deix_bc - EXTERN ____sdcc_ll_sub_hlix_deix_bcix - EXTERN ____sdcc_load_debc_deix - EXTERN ____sdcc_load_dehl_deix - EXTERN ____sdcc_load_debc_mhl - EXTERN ____sdcc_load_hlde_mhl - EXTERN ____sdcc_store_dehl_bcix - EXTERN ____sdcc_store_debc_hlix - EXTERN ____sdcc_store_debc_mhl - EXTERN ____sdcc_cpu_pop_ei - EXTERN ____sdcc_cpu_pop_ei_jp - EXTERN ____sdcc_cpu_push_di - EXTERN ____sdcc_outi - EXTERN ____sdcc_outi_128 - EXTERN ____sdcc_outi_256 - EXTERN ____sdcc_ldi - EXTERN ____sdcc_ldi_128 - EXTERN ____sdcc_ldi_256 - EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_dehl_dst_bcix - EXTERN ____sdcc_4_and_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_cpl_src_mhl_dst_debc - EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc - -;-------------------------------------------------------- -; Public variables in this module -;-------------------------------------------------------- - GLOBAL _usbdev_control_transfer - GLOBAL _usbdev_blk_out_trnsfer - GLOBAL _usbdev_bulk_in_transfer - GLOBAL _usbdev_dat_in_trnsfer - GLOBAL _usbdev_dat_in_trnsfer_0 -;-------------------------------------------------------- -; Externals used -;-------------------------------------------------------- - GLOBAL _critical_end - GLOBAL _critical_begin - GLOBAL _usbtrn_clear_endpoint_halt - GLOBAL _usbtrn_set_address - GLOBAL _usbtrn_set_configuration - GLOBAL _usbtrn_gfull_cfg_desc - GLOBAL _usbtrn_get_config_descriptor - GLOBAL _usbtrn_get_descriptor2 - GLOBAL _usbtrn_get_descriptor - GLOBAL _usb_data_out_transfer - GLOBAL _usb_data_in_transfer_n - GLOBAL _usb_data_in_transfer - GLOBAL _usb_control_transfer - GLOBAL _ch_issue_token_in_ep0 - GLOBAL _ch_issue_token_out_ep0 - GLOBAL _ch_issue_token_setup - GLOBAL _ch_data_out_transfer - GLOBAL _ch_data_in_transfer_n - GLOBAL _ch_data_in_transfer - GLOBAL _ch_control_transfer_set_config - GLOBAL _ch_control_transfer_set_address - GLOBAL _ch_control_transfer_request_descriptor - GLOBAL _ch_set_usb_address - GLOBAL _ch_write_data - GLOBAL _ch_cmd_get_ic_version - GLOBAL _ch_cmd_set_usb_mode - GLOBAL _ch_probe - GLOBAL _ch_cmd_reset_all - GLOBAL _ch_read_data - GLOBAL _ch_very_short_wait_int_and_get_status - GLOBAL _ch_short_wait_int_and_get_status - GLOBAL _ch_long_wait_int_and_get_status - GLOBAL _ch_get_status - GLOBAL _ch_command - GLOBAL _delay_medium - GLOBAL _delay_short - GLOBAL _delay_20ms - GLOBAL _printf - GLOBAL _delay - GLOBAL _ulltoa_callee - GLOBAL _ulltoa - GLOBAL _strtoull_callee - GLOBAL _strtoull - GLOBAL _strtoll_callee - GLOBAL _strtoll - GLOBAL _lltoa_callee - GLOBAL _lltoa - GLOBAL _llabs_callee - GLOBAL _llabs - GLOBAL __lldivu__callee - GLOBAL __lldivu_ - GLOBAL __lldiv__callee - GLOBAL __lldiv_ - GLOBAL _atoll_callee - GLOBAL _atoll - GLOBAL _realloc_unlocked_callee - GLOBAL _realloc_unlocked - GLOBAL _malloc_unlocked_fastcall - GLOBAL _malloc_unlocked - GLOBAL _free_unlocked_fastcall - GLOBAL _free_unlocked - GLOBAL _calloc_unlocked_callee - GLOBAL _calloc_unlocked - GLOBAL _aligned_alloc_unlocked_callee - GLOBAL _aligned_alloc_unlocked - GLOBAL _realloc_callee - GLOBAL _realloc - GLOBAL _malloc_fastcall - GLOBAL _malloc - GLOBAL _free_fastcall - GLOBAL _free - GLOBAL _calloc_callee - GLOBAL _calloc - GLOBAL _aligned_alloc_callee - GLOBAL _aligned_alloc - GLOBAL _utoa_callee - GLOBAL _utoa - GLOBAL _ultoa_callee - GLOBAL _ultoa - GLOBAL _system_fastcall - GLOBAL _system - GLOBAL _strtoul_callee - GLOBAL _strtoul - GLOBAL _strtol_callee - GLOBAL _strtol - GLOBAL _strtof_callee - GLOBAL _strtof - GLOBAL _strtod_callee - GLOBAL _strtod - GLOBAL _srand_fastcall - GLOBAL _srand - GLOBAL _rand - GLOBAL _quick_exit_fastcall - GLOBAL _quick_exit - GLOBAL _qsort_callee - GLOBAL _qsort - GLOBAL _ltoa_callee - GLOBAL _ltoa - GLOBAL _labs_fastcall - GLOBAL _labs - GLOBAL _itoa_callee - GLOBAL _itoa - GLOBAL _ftoh_callee - GLOBAL _ftoh - GLOBAL _ftog_callee - GLOBAL _ftog - GLOBAL _ftoe_callee - GLOBAL _ftoe - GLOBAL _ftoa_callee - GLOBAL _ftoa - GLOBAL _exit_fastcall - GLOBAL _exit - GLOBAL _dtoh_callee - GLOBAL _dtoh - GLOBAL _dtog_callee - GLOBAL _dtog - GLOBAL _dtoe_callee - GLOBAL _dtoe - GLOBAL _dtoa_callee - GLOBAL _dtoa - GLOBAL _bsearch_callee - GLOBAL _bsearch - GLOBAL _atol_fastcall - GLOBAL _atol - GLOBAL _atoi_fastcall - GLOBAL _atoi - GLOBAL _atof_fastcall - GLOBAL _atof - GLOBAL _atexit_fastcall - GLOBAL _atexit - GLOBAL _at_quick_exit_fastcall - GLOBAL _at_quick_exit - GLOBAL _abs_fastcall - GLOBAL _abs - GLOBAL _abort - GLOBAL __strtou__callee - GLOBAL __strtou_ - GLOBAL __strtoi__callee - GLOBAL __strtoi_ - GLOBAL __random_uniform_xor_8__fastcall - GLOBAL __random_uniform_xor_8_ - GLOBAL __random_uniform_xor_32__fastcall - GLOBAL __random_uniform_xor_32_ - GLOBAL __random_uniform_cmwc_8__fastcall - GLOBAL __random_uniform_cmwc_8_ - GLOBAL __shellsort__callee - GLOBAL __shellsort_ - GLOBAL __quicksort__callee - GLOBAL __quicksort_ - GLOBAL __insertion_sort__callee - GLOBAL __insertion_sort_ - GLOBAL __ldivu__callee - GLOBAL __ldivu_ - GLOBAL __ldiv__callee - GLOBAL __ldiv_ - GLOBAL __divu__callee - GLOBAL __divu_ - GLOBAL __div__callee - GLOBAL __div_ - GLOBAL _in_critical_usb_section - GLOBAL _result -;-------------------------------------------------------- -; special function registers -;-------------------------------------------------------- -defc _CH376_DATA_PORT = 0xff88 -defc _CH376_COMMAND_PORT = 0xff89 -defc _USB_MODULE_LEDS = 0xff8a -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - SECTION bss_compiler -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - -IF 0 - -; .area _INITIALIZED removed by z88dk - - -ENDIF - -;-------------------------------------------------------- -; absolute external ram data -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; global & static initialisations -;-------------------------------------------------------- - SECTION code_crt_init -;-------------------------------------------------------- -; Home -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; code -;-------------------------------------------------------- - SECTION code_compiler -;source-doc/base-drv/dev_transfers.c:31: usb_error usbdev_control_transfer(device_config *const device, const setup_packet *const cmd_packet, uint8_t *const buffer) { -; --------------------------------- -; Function usbdev_control_transfer -; --------------------------------- -_usbdev_control_transfer: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/dev_transfers.c:32: return usb_control_transfer(cmd_packet, buffer, device->address, device->max_packet_size); - ld l,(ix+4) - ld h,(ix+5) - ld e,l - ld d,h - inc hl - ld b, (hl) - ex de, hl - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - ld e,(ix+8) - ld d,(ix+9) - ld c,a - push bc - push de - ld l,(ix+6) - ld h,(ix+7) - push hl - call _usb_control_transfer - pop af - pop af - pop af -;source-doc/base-drv/dev_transfers.c:33: } - pop ix - ret -;source-doc/base-drv/dev_transfers.c:35: usb_error usbdev_blk_out_trnsfer(device_config *const dev, const uint8_t *const buffer, const uint16_t buffer_size) { -; --------------------------------- -; Function usbdev_blk_out_trnsfer -; --------------------------------- -_usbdev_blk_out_trnsfer: - push ix - ld ix,0 - add ix,sp - dec sp -;source-doc/base-drv/dev_transfers.c:37: endpoint_param *const endpoint = &dev->endpoints[ENDPOINT_BULK_OUT]; - ld e,(ix+4) - ld d,(ix+5) - ld c, e - ld b, d - inc bc - inc bc - inc bc -;source-doc/base-drv/dev_transfers.c:39: result = usb_data_out_transfer(buffer, buffer_size, dev->address, endpoint); - ld l, e - ld h, d - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - push bc - push de - push bc - push af - inc sp - ld l,(ix+8) - ld h,(ix+9) - push hl - ld l,(ix+6) - ld h,(ix+7) - push hl - call _usb_data_out_transfer - pop af - pop af - pop af - inc sp - pop de - pop bc - ld a, l - ld (_result), a -;source-doc/base-drv/dev_transfers.c:41: if (result == USB_ERR_STALL) { - ld a,(_result) - sub a,0x02 - jr NZ,l_usbdev_blk_out_trnsfer_00102 -;source-doc/base-drv/dev_transfers.c:42: usbtrn_clear_endpoint_halt(endpoint->number, dev->address, dev->max_packet_size); - ld l, e - ld h, d - inc hl - ld a, (hl) - ld (ix-1),a - ex de, hl - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - ld d, a - ld l, c - ld h, b - ld a, (hl) - rrca - and a,0x07 - push bc - ld h,(ix-1) - ld l,d - push hl - push af - inc sp - call _usbtrn_clear_endpoint_halt - pop af - inc sp - pop bc -;source-doc/base-drv/dev_transfers.c:43: endpoint->toggle = 0; - ld a, (bc) - and a,0xfe - ld (bc), a -;source-doc/base-drv/dev_transfers.c:44: return USB_ERR_STALL; - ld l,0x02 - jr l_usbdev_blk_out_trnsfer_00104 -l_usbdev_blk_out_trnsfer_00102: -;source-doc/base-drv/dev_transfers.c:47: RETURN_CHECK(result); -;source-doc/base-drv/dev_transfers.c:50: return result; - ld hl,(_result) -l_usbdev_blk_out_trnsfer_00104: -;source-doc/base-drv/dev_transfers.c:51: } - inc sp - pop ix - ret -;source-doc/base-drv/dev_transfers.c:53: usb_error usbdev_bulk_in_transfer(device_config *const dev, uint8_t *const buffer, uint8_t *const buffer_size) { -; --------------------------------- -; Function usbdev_bulk_in_transfer -; --------------------------------- -_usbdev_bulk_in_transfer: - push ix - ld ix,0 - add ix,sp - dec sp -;source-doc/base-drv/dev_transfers.c:54: endpoint_param *const endpoint = &dev->endpoints[ENDPOINT_BULK_IN]; - ld c,(ix+4) - ld b,(ix+5) - ld hl,0x0006 - add hl, bc -;source-doc/base-drv/dev_transfers.c:56: result = usb_data_in_transfer_n(buffer, buffer_size, dev->address, endpoint); - ld e,c - ld d,b - ex de,hl - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - push bc - push de - push de - push af - inc sp - ld l,(ix+8) - ld h,(ix+9) - push hl - ld l,(ix+6) - ld h,(ix+7) - push hl - call _usb_data_in_transfer_n - pop af - pop af - pop af - inc sp - pop de - pop bc - ld a, l - ld (_result), a -;source-doc/base-drv/dev_transfers.c:58: if (result == USB_ERR_STALL) { - ld a,(_result) - sub a,0x02 - jr NZ,l_usbdev_bulk_in_transfer_00102 -;source-doc/base-drv/dev_transfers.c:59: usbtrn_clear_endpoint_halt(endpoint->number, dev->address, dev->max_packet_size); - ld l, c - ld h, b - inc hl - ld a, (hl) - ld (ix-1),a - ld l, c - ld h, b - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - ld b, a - ld l, e - ld h, d - ld a, (hl) - rrca - and a,0x07 - push de - ld h,(ix-1) - ld l,b - push hl - push af - inc sp - call _usbtrn_clear_endpoint_halt - pop af - inc sp - pop de -;source-doc/base-drv/dev_transfers.c:60: endpoint->toggle = 0; - ex de, hl - res 0, (hl) -;source-doc/base-drv/dev_transfers.c:61: return USB_ERR_STALL; - ld l,0x02 - jr l_usbdev_bulk_in_transfer_00104 -l_usbdev_bulk_in_transfer_00102: -;source-doc/base-drv/dev_transfers.c:64: RETURN_CHECK(result); -;source-doc/base-drv/dev_transfers.c:66: return result; - ld hl,(_result) -l_usbdev_bulk_in_transfer_00104: -;source-doc/base-drv/dev_transfers.c:67: } - inc sp - pop ix - ret -;source-doc/base-drv/dev_transfers.c:69: usb_error usbdev_dat_in_trnsfer(device_config *const device, -; --------------------------------- -; Function usbdev_dat_in_trnsfer -; --------------------------------- -_usbdev_dat_in_trnsfer: - push ix - ld ix,0 - add ix,sp - dec sp -;source-doc/base-drv/dev_transfers.c:74: endpoint_param *const endpoint = &device->endpoints[endpoint_type]; - ld e,(ix+4) - ld d,(ix+5) - ld c, e - ld b, d - inc bc - inc bc - inc bc - push de - ld a,(ix+10) - ld e, a - add a, a - add a, e - pop de - add a, c - ld c, a - ld a,0x00 - adc a, b - ld b, a -;source-doc/base-drv/dev_transfers.c:76: result = usb_data_in_transfer(buffer, buffer_size, device->address, endpoint); - ld l, e - ld h, d - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - push bc - push de - push bc - push af - inc sp - ld l,(ix+8) - ld h,(ix+9) - push hl - ld l,(ix+6) - ld h,(ix+7) - push hl - call _usb_data_in_transfer - pop af - pop af - pop af - inc sp - pop de - pop bc - ld a, l - ld (_result), a -;source-doc/base-drv/dev_transfers.c:78: if (result == USB_ERR_STALL) { - ld a,(_result) - sub a,0x02 - jr NZ,l_usbdev_dat_in_trnsfer_00102 -;source-doc/base-drv/dev_transfers.c:79: usbtrn_clear_endpoint_halt(endpoint->number, device->address, device->max_packet_size); - ld l, e - ld h, d - inc hl - ld a, (hl) - ld (ix-1),a - ex de, hl - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - ld d, a - ld l, c - ld h, b - ld a, (hl) - rrca - and a,0x07 - push bc - ld h,(ix-1) - ld l,d - push hl - push af - inc sp - call _usbtrn_clear_endpoint_halt - pop af - inc sp - pop bc -;source-doc/base-drv/dev_transfers.c:80: endpoint->toggle = 0; - ld a, (bc) - and a,0xfe - ld (bc), a -;source-doc/base-drv/dev_transfers.c:81: return USB_ERR_STALL; - ld l,0x02 - jr l_usbdev_dat_in_trnsfer_00104 -l_usbdev_dat_in_trnsfer_00102: -;source-doc/base-drv/dev_transfers.c:84: RETURN_CHECK(result); -;source-doc/base-drv/dev_transfers.c:86: return result; - ld hl,(_result) -l_usbdev_dat_in_trnsfer_00104: -;source-doc/base-drv/dev_transfers.c:87: } - inc sp - pop ix - ret -;source-doc/base-drv/dev_transfers.c:89: usb_error usbdev_dat_in_trnsfer_0(device_config *const device, uint8_t *const buffer, const uint8_t buffer_size) { -; --------------------------------- -; Function usbdev_dat_in_trnsfer_0 -; --------------------------------- -_usbdev_dat_in_trnsfer_0: - push ix - ld ix,0 - add ix,sp - push af -;source-doc/base-drv/dev_transfers.c:90: endpoint_param *const endpoint = &device->endpoints[0]; - ld e,(ix+4) - ld d,(ix+5) - ld hl,0x0003 - add hl, de - ex (sp), hl -;source-doc/base-drv/dev_transfers.c:92: result = usb_data_in_transfer(buffer, buffer_size, device->address, endpoint); - ld l, e - ld h, d - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - ld c,(ix+8) - ld b,0x00 - push de - ld l,(ix-2) - ld h,(ix-1) - push hl - push af - inc sp - push bc - ld l,(ix+6) - ld h,(ix+7) - push hl - call _usb_data_in_transfer - pop af - pop af - pop af - inc sp - pop de - ld a, l - ld (_result), a -;source-doc/base-drv/dev_transfers.c:94: if (result == USB_ERR_STALL) { - ld a,(_result) - sub a,0x02 - jr NZ,l_usbdev_dat_in_trnsfer_0_00102 -;source-doc/base-drv/dev_transfers.c:95: usbtrn_clear_endpoint_halt(endpoint->number, device->address, device->max_packet_size); - ld l, e - ld h, d - inc hl - ld b, (hl) - ex de, hl - ld a, (hl) - rlca - rlca - rlca - rlca - and a,0x0f - ld d, a - pop hl - ld a,(hl) - push hl - rrca - and a,0x07 - ld c, d - push bc - push af - inc sp - call _usbtrn_clear_endpoint_halt - pop af - inc sp -;source-doc/base-drv/dev_transfers.c:96: endpoint->toggle = 0; - pop hl - push hl - res 0, (hl) -;source-doc/base-drv/dev_transfers.c:97: return USB_ERR_STALL; - ld l,0x02 - jr l_usbdev_dat_in_trnsfer_0_00103 -l_usbdev_dat_in_trnsfer_0_00102: -;source-doc/base-drv/dev_transfers.c:100: return result; - ld hl,(_result) -l_usbdev_dat_in_trnsfer_0_00103: -;source-doc/base-drv/dev_transfers.c:101: } - ld sp, ix - pop ix - ret - SECTION IGNORE diff --git a/Source/HBIOS/ch376-native/base-drv/enumerate.c.asm b/Source/HBIOS/ch376-native/base-drv/enumerate.c.asm deleted file mode 100644 index 5fbd81a5..00000000 --- a/Source/HBIOS/ch376-native/base-drv/enumerate.c.asm +++ /dev/null @@ -1,1472 +0,0 @@ -;-------------------------------------------------------- -; File Created by SDCC : free open source ISO C Compiler -; Version 4.4.0 #14648 (Linux) -;-------------------------------------------------------- -; Processed by Z88DK -;-------------------------------------------------------- - - EXTERN __divschar - EXTERN __divschar_callee - EXTERN __divsint - EXTERN __divsint_callee - EXTERN __divslong - EXTERN __divslong_callee - EXTERN __divslonglong - EXTERN __divslonglong_callee - EXTERN __divsuchar - EXTERN __divsuchar_callee - EXTERN __divuchar - EXTERN __divuchar_callee - EXTERN __divuint - EXTERN __divuint_callee - EXTERN __divulong - EXTERN __divulong_callee - EXTERN __divulonglong - EXTERN __divulonglong_callee - EXTERN __divuschar - EXTERN __divuschar_callee - EXTERN __modschar - EXTERN __modschar_callee - EXTERN __modsint - EXTERN __modsint_callee - EXTERN __modslong - EXTERN __modslong_callee - EXTERN __modslonglong - EXTERN __modslonglong_callee - EXTERN __modsuchar - EXTERN __modsuchar_callee - EXTERN __moduchar - EXTERN __moduchar_callee - EXTERN __moduint - EXTERN __moduint_callee - EXTERN __modulong - EXTERN __modulong_callee - EXTERN __modulonglong - EXTERN __modulonglong_callee - EXTERN __moduschar - EXTERN __moduschar_callee - EXTERN __mulint - EXTERN __mulint_callee - EXTERN __mullong - EXTERN __mullong_callee - EXTERN __mullonglong - EXTERN __mullonglong_callee - EXTERN __mulschar - EXTERN __mulschar_callee - EXTERN __mulsuchar - EXTERN __mulsuchar_callee - EXTERN __muluchar - EXTERN __muluchar_callee - EXTERN __muluschar - EXTERN __muluschar_callee - EXTERN __rlslonglong - EXTERN __rlslonglong_callee - EXTERN __rlulonglong - EXTERN __rlulonglong_callee - EXTERN __rrslonglong - EXTERN __rrslonglong_callee - EXTERN __rrulonglong - EXTERN __rrulonglong_callee - EXTERN ___mulsint2slong - EXTERN ___mulsint2slong_callee - EXTERN ___muluint2ulong - EXTERN ___muluint2ulong_callee - EXTERN ___sdcc_call_hl - EXTERN ___sdcc_call_iy - EXTERN ___sdcc_enter_ix - EXTERN banked_call - EXTERN _banked_ret - EXTERN ___fs2schar - EXTERN ___fs2schar_callee - EXTERN ___fs2sint - EXTERN ___fs2sint_callee - EXTERN ___fs2slong - EXTERN ___fs2slong_callee - EXTERN ___fs2slonglong - EXTERN ___fs2slonglong_callee - EXTERN ___fs2uchar - EXTERN ___fs2uchar_callee - EXTERN ___fs2uint - EXTERN ___fs2uint_callee - EXTERN ___fs2ulong - EXTERN ___fs2ulong_callee - EXTERN ___fs2ulonglong - EXTERN ___fs2ulonglong_callee - EXTERN ___fsadd - EXTERN ___fsadd_callee - EXTERN ___fsdiv - EXTERN ___fsdiv_callee - EXTERN ___fseq - EXTERN ___fseq_callee - EXTERN ___fsgt - EXTERN ___fsgt_callee - EXTERN ___fslt - EXTERN ___fslt_callee - EXTERN ___fsmul - EXTERN ___fsmul_callee - EXTERN ___fsneq - EXTERN ___fsneq_callee - EXTERN ___fssub - EXTERN ___fssub_callee - EXTERN ___schar2fs - EXTERN ___schar2fs_callee - EXTERN ___sint2fs - EXTERN ___sint2fs_callee - EXTERN ___slong2fs - EXTERN ___slong2fs_callee - EXTERN ___slonglong2fs - EXTERN ___slonglong2fs_callee - EXTERN ___uchar2fs - EXTERN ___uchar2fs_callee - EXTERN ___uint2fs - EXTERN ___uint2fs_callee - EXTERN ___ulong2fs - EXTERN ___ulong2fs_callee - EXTERN ___ulonglong2fs - EXTERN ___ulonglong2fs_callee - EXTERN ____sdcc_2_copy_src_mhl_dst_deix - EXTERN ____sdcc_2_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_deix - EXTERN ____sdcc_4_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_mbc - EXTERN ____sdcc_4_ldi_nosave_bc - EXTERN ____sdcc_4_ldi_save_bc - EXTERN ____sdcc_4_push_hlix - EXTERN ____sdcc_4_push_mhl - EXTERN ____sdcc_lib_setmem_hl - EXTERN ____sdcc_ll_add_de_bc_hl - EXTERN ____sdcc_ll_add_de_bc_hlix - EXTERN ____sdcc_ll_add_de_hlix_bc - EXTERN ____sdcc_ll_add_de_hlix_bcix - EXTERN ____sdcc_ll_add_deix_bc_hl - EXTERN ____sdcc_ll_add_deix_hlix - EXTERN ____sdcc_ll_add_hlix_bc_deix - EXTERN ____sdcc_ll_add_hlix_deix_bc - EXTERN ____sdcc_ll_add_hlix_deix_bcix - EXTERN ____sdcc_ll_asr_hlix_a - EXTERN ____sdcc_ll_asr_mbc_a - EXTERN ____sdcc_ll_copy_src_de_dst_hlix - EXTERN ____sdcc_ll_copy_src_de_dst_hlsp - EXTERN ____sdcc_ll_copy_src_deix_dst_hl - EXTERN ____sdcc_ll_copy_src_deix_dst_hlix - EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp - EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp - EXTERN ____sdcc_ll_copy_src_hl_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm - EXTERN ____sdcc_ll_lsl_hlix_a - EXTERN ____sdcc_ll_lsl_mbc_a - EXTERN ____sdcc_ll_lsr_hlix_a - EXTERN ____sdcc_ll_lsr_mbc_a - EXTERN ____sdcc_ll_push_hlix - EXTERN ____sdcc_ll_push_mhl - EXTERN ____sdcc_ll_sub_de_bc_hl - EXTERN ____sdcc_ll_sub_de_bc_hlix - EXTERN ____sdcc_ll_sub_de_hlix_bc - EXTERN ____sdcc_ll_sub_de_hlix_bcix - EXTERN ____sdcc_ll_sub_deix_bc_hl - EXTERN ____sdcc_ll_sub_deix_hlix - EXTERN ____sdcc_ll_sub_hlix_bc_deix - EXTERN ____sdcc_ll_sub_hlix_deix_bc - EXTERN ____sdcc_ll_sub_hlix_deix_bcix - EXTERN ____sdcc_load_debc_deix - EXTERN ____sdcc_load_dehl_deix - EXTERN ____sdcc_load_debc_mhl - EXTERN ____sdcc_load_hlde_mhl - EXTERN ____sdcc_store_dehl_bcix - EXTERN ____sdcc_store_debc_hlix - EXTERN ____sdcc_store_debc_mhl - EXTERN ____sdcc_cpu_pop_ei - EXTERN ____sdcc_cpu_pop_ei_jp - EXTERN ____sdcc_cpu_push_di - EXTERN ____sdcc_outi - EXTERN ____sdcc_outi_128 - EXTERN ____sdcc_outi_256 - EXTERN ____sdcc_ldi - EXTERN ____sdcc_ldi_128 - EXTERN ____sdcc_ldi_256 - EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_dehl_dst_bcix - EXTERN ____sdcc_4_and_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_cpl_src_mhl_dst_debc - EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc - -;-------------------------------------------------------- -; Public variables in this module -;-------------------------------------------------------- - GLOBAL _op_get_cfg_desc - GLOBAL _op_cap_drv_intf - GLOBAL _op_capture_hub_driver_interface - GLOBAL _configure_device - GLOBAL _op_endpoint_next - GLOBAL _op_interface_next - GLOBAL _identify_class_driver - GLOBAL _parse_endpoint_keyboard - GLOBAL _op_parse_endpoint - GLOBAL _op_id_class_drv - GLOBAL _read_all_configs - GLOBAL _enumerate_all_devices -;-------------------------------------------------------- -; Externals used -;-------------------------------------------------------- - GLOBAL _print_uint16 - GLOBAL _print_string - GLOBAL _print_hex - GLOBAL _ffsll_callee - GLOBAL _ffsll - GLOBAL _strxfrm_callee - GLOBAL _strxfrm - GLOBAL _strupr_fastcall - GLOBAL _strupr - GLOBAL _strtok_r_callee - GLOBAL _strtok_r - GLOBAL _strtok_callee - GLOBAL _strtok - GLOBAL _strstrip_fastcall - GLOBAL _strstrip - GLOBAL _strstr_callee - GLOBAL _strstr - GLOBAL _strspn_callee - GLOBAL _strspn - GLOBAL _strsep_callee - GLOBAL _strsep - GLOBAL _strrstrip_fastcall - GLOBAL _strrstrip - GLOBAL _strrstr_callee - GLOBAL _strrstr - GLOBAL _strrspn_callee - GLOBAL _strrspn - GLOBAL _strrev_fastcall - GLOBAL _strrev - GLOBAL _strrcspn_callee - GLOBAL _strrcspn - GLOBAL _strrchr_callee - GLOBAL _strrchr - GLOBAL _strpbrk_callee - GLOBAL _strpbrk - GLOBAL _strnlen_callee - GLOBAL _strnlen - GLOBAL _strnicmp_callee - GLOBAL _strnicmp - GLOBAL _strndup_callee - GLOBAL _strndup - GLOBAL _strncpy_callee - GLOBAL _strncpy - GLOBAL _strncmp_callee - GLOBAL _strncmp - GLOBAL _strnchr_callee - GLOBAL _strnchr - GLOBAL _strncat_callee - GLOBAL _strncat - GLOBAL _strncasecmp_callee - GLOBAL _strncasecmp - GLOBAL _strlwr_fastcall - GLOBAL _strlwr - GLOBAL _strlen_fastcall - GLOBAL _strlen - GLOBAL _strlcpy_callee - GLOBAL _strlcpy - GLOBAL _strlcat_callee - GLOBAL _strlcat - GLOBAL _stricmp_callee - GLOBAL _stricmp - GLOBAL _strerror_fastcall - GLOBAL _strerror - GLOBAL _strdup_fastcall - GLOBAL _strdup - GLOBAL _strcspn_callee - GLOBAL _strcspn - GLOBAL _strcpy_callee - GLOBAL _strcpy - GLOBAL _strcoll_callee - GLOBAL _strcoll - GLOBAL _strcmp_callee - GLOBAL _strcmp - GLOBAL _strchrnul_callee - GLOBAL _strchrnul - GLOBAL _strchr_callee - GLOBAL _strchr - GLOBAL _strcat_callee - GLOBAL _strcat - GLOBAL _strcasecmp_callee - GLOBAL _strcasecmp - GLOBAL _stpncpy_callee - GLOBAL _stpncpy - GLOBAL _stpcpy_callee - GLOBAL _stpcpy - GLOBAL _memswap_callee - GLOBAL _memswap - GLOBAL _memset_wr_callee - GLOBAL _memset_wr - GLOBAL _memset_callee - GLOBAL _memset - GLOBAL _memrchr_callee - GLOBAL _memrchr - GLOBAL _memmove_callee - GLOBAL _memmove - GLOBAL _memmem_callee - GLOBAL _memmem - GLOBAL _memcpy_callee - GLOBAL _memcpy - GLOBAL _memcmp_callee - GLOBAL _memcmp - GLOBAL _memchr_callee - GLOBAL _memchr - GLOBAL _memccpy_callee - GLOBAL _memccpy - GLOBAL _ffsl_fastcall - GLOBAL _ffsl - GLOBAL _ffs_fastcall - GLOBAL _ffs - GLOBAL __strrstrip__fastcall - GLOBAL __strrstrip_ - GLOBAL __memupr__callee - GLOBAL __memupr_ - GLOBAL __memstrcpy__callee - GLOBAL __memstrcpy_ - GLOBAL __memlwr__callee - GLOBAL __memlwr_ - GLOBAL _rawmemchr_callee - GLOBAL _rawmemchr - GLOBAL _strnset_callee - GLOBAL _strnset - GLOBAL _strset_callee - GLOBAL _strset - GLOBAL _rindex_callee - GLOBAL _rindex - GLOBAL _index_callee - GLOBAL _index - GLOBAL _bzero_callee - GLOBAL _bzero - GLOBAL _bcopy_callee - GLOBAL _bcopy - GLOBAL _bcmp_callee - GLOBAL _bcmp - GLOBAL _get_number_of_usb_drives - GLOBAL _parse_endpoints - GLOBAL _configure_usb_hub - GLOBAL _get_usb_device_config - GLOBAL _find_device_config - GLOBAL _next_device_config - GLOBAL _first_device_config - GLOBAL _find_first_free - GLOBAL _usbtrn_clear_endpoint_halt - GLOBAL _usbtrn_set_address - GLOBAL _usbtrn_set_configuration - GLOBAL _usbtrn_gfull_cfg_desc - GLOBAL _usbtrn_get_config_descriptor - GLOBAL _usbtrn_get_descriptor2 - GLOBAL _usbtrn_get_descriptor - GLOBAL _usbdev_dat_in_trnsfer_0 - GLOBAL _usbdev_dat_in_trnsfer - GLOBAL _usbdev_bulk_in_transfer - GLOBAL _usbdev_blk_out_trnsfer - GLOBAL _usbdev_control_transfer - GLOBAL _usb_data_out_transfer - GLOBAL _usb_data_in_transfer_n - GLOBAL _usb_data_in_transfer - GLOBAL _usb_control_transfer - GLOBAL _ch_issue_token_in_ep0 - GLOBAL _ch_issue_token_out_ep0 - GLOBAL _ch_issue_token_setup - GLOBAL _ch_data_out_transfer - GLOBAL _ch_data_in_transfer_n - GLOBAL _ch_data_in_transfer - GLOBAL _ch_control_transfer_set_config - GLOBAL _ch_control_transfer_set_address - GLOBAL _ch_control_transfer_request_descriptor - GLOBAL _ch_set_usb_address - GLOBAL _ch_write_data - GLOBAL _ch_cmd_get_ic_version - GLOBAL _ch_cmd_set_usb_mode - GLOBAL _ch_probe - GLOBAL _ch_cmd_reset_all - GLOBAL _ch_read_data - GLOBAL _ch_very_short_wait_int_and_get_status - GLOBAL _ch_short_wait_int_and_get_status - GLOBAL _ch_long_wait_int_and_get_status - GLOBAL _ch_get_status - GLOBAL _ch_command - GLOBAL _delay_medium - GLOBAL _delay_short - GLOBAL _delay_20ms - GLOBAL _printf - GLOBAL _delay - GLOBAL _ulltoa_callee - GLOBAL _ulltoa - GLOBAL _strtoull_callee - GLOBAL _strtoull - GLOBAL _strtoll_callee - GLOBAL _strtoll - GLOBAL _lltoa_callee - GLOBAL _lltoa - GLOBAL _llabs_callee - GLOBAL _llabs - GLOBAL __lldivu__callee - GLOBAL __lldivu_ - GLOBAL __lldiv__callee - GLOBAL __lldiv_ - GLOBAL _atoll_callee - GLOBAL _atoll - GLOBAL _realloc_unlocked_callee - GLOBAL _realloc_unlocked - GLOBAL _malloc_unlocked_fastcall - GLOBAL _malloc_unlocked - GLOBAL _free_unlocked_fastcall - GLOBAL _free_unlocked - GLOBAL _calloc_unlocked_callee - GLOBAL _calloc_unlocked - GLOBAL _aligned_alloc_unlocked_callee - GLOBAL _aligned_alloc_unlocked - GLOBAL _realloc_callee - GLOBAL _realloc - GLOBAL _malloc_fastcall - GLOBAL _malloc - GLOBAL _free_fastcall - GLOBAL _free - GLOBAL _calloc_callee - GLOBAL _calloc - GLOBAL _aligned_alloc_callee - GLOBAL _aligned_alloc - GLOBAL _utoa_callee - GLOBAL _utoa - GLOBAL _ultoa_callee - GLOBAL _ultoa - GLOBAL _system_fastcall - GLOBAL _system - GLOBAL _strtoul_callee - GLOBAL _strtoul - GLOBAL _strtol_callee - GLOBAL _strtol - GLOBAL _strtof_callee - GLOBAL _strtof - GLOBAL _strtod_callee - GLOBAL _strtod - GLOBAL _srand_fastcall - GLOBAL _srand - GLOBAL _rand - GLOBAL _quick_exit_fastcall - GLOBAL _quick_exit - GLOBAL _qsort_callee - GLOBAL _qsort - GLOBAL _ltoa_callee - GLOBAL _ltoa - GLOBAL _labs_fastcall - GLOBAL _labs - GLOBAL _itoa_callee - GLOBAL _itoa - GLOBAL _ftoh_callee - GLOBAL _ftoh - GLOBAL _ftog_callee - GLOBAL _ftog - GLOBAL _ftoe_callee - GLOBAL _ftoe - GLOBAL _ftoa_callee - GLOBAL _ftoa - GLOBAL _exit_fastcall - GLOBAL _exit - GLOBAL _dtoh_callee - GLOBAL _dtoh - GLOBAL _dtog_callee - GLOBAL _dtog - GLOBAL _dtoe_callee - GLOBAL _dtoe - GLOBAL _dtoa_callee - GLOBAL _dtoa - GLOBAL _bsearch_callee - GLOBAL _bsearch - GLOBAL _atol_fastcall - GLOBAL _atol - GLOBAL _atoi_fastcall - GLOBAL _atoi - GLOBAL _atof_fastcall - GLOBAL _atof - GLOBAL _atexit_fastcall - GLOBAL _atexit - GLOBAL _at_quick_exit_fastcall - GLOBAL _at_quick_exit - GLOBAL _abs_fastcall - GLOBAL _abs - GLOBAL _abort - GLOBAL __strtou__callee - GLOBAL __strtou_ - GLOBAL __strtoi__callee - GLOBAL __strtoi_ - GLOBAL __random_uniform_xor_8__fastcall - GLOBAL __random_uniform_xor_8_ - GLOBAL __random_uniform_xor_32__fastcall - GLOBAL __random_uniform_xor_32_ - GLOBAL __random_uniform_cmwc_8__fastcall - GLOBAL __random_uniform_cmwc_8_ - GLOBAL __shellsort__callee - GLOBAL __shellsort_ - GLOBAL __quicksort__callee - GLOBAL __quicksort_ - GLOBAL __insertion_sort__callee - GLOBAL __insertion_sort_ - GLOBAL __ldivu__callee - GLOBAL __ldivu_ - GLOBAL __ldiv__callee - GLOBAL __ldiv_ - GLOBAL __divu__callee - GLOBAL __divu_ - GLOBAL __div__callee - GLOBAL __div_ - GLOBAL _x - GLOBAL _result -;-------------------------------------------------------- -; special function registers -;-------------------------------------------------------- -defc _CH376_DATA_PORT = 0xff88 -defc _CH376_COMMAND_PORT = 0xff89 -defc _USB_MODULE_LEDS = 0xff8a -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - SECTION bss_compiler -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - -IF 0 - -; .area _INITIALIZED removed by z88dk - - -ENDIF - -;-------------------------------------------------------- -; absolute external ram data -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; global & static initialisations -;-------------------------------------------------------- - SECTION code_crt_init -;-------------------------------------------------------- -; Home -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; code -;-------------------------------------------------------- - SECTION code_compiler -;source-doc/base-drv/enumerate.c:13: void parse_endpoint_keyboard(device_config_keyboard *const keyboard_config, const endpoint_descriptor const *pEndpoint) -; --------------------------------- -; Function parse_endpoint_keyboard -; --------------------------------- -_parse_endpoint_keyboard: - push ix - ld ix,0 - add ix,sp - push af -;source-doc/base-drv/enumerate.c:15: endpoint_param *const ep = &keyboard_config->endpoints[0]; - inc hl - inc hl - inc hl -;source-doc/base-drv/enumerate.c:16: ep->number = pEndpoint->bEndpointAddress; - ld c,l - ld b,h - ex (sp),hl - ld l, e - ld h, d - inc hl - inc hl - ld a, (hl) - pop hl - push hl - rlca - and a,0x0e - push bc - ld c, a - ld a, (hl) - and a,0xf1 - or a, c - ld (hl), a -;source-doc/base-drv/enumerate.c:17: ep->toggle = 0; - pop hl - ld c,l - ld b,h - res 0, (hl) -;source-doc/base-drv/enumerate.c:18: ep->max_packet_sizex = calc_max_packet_sizex(pEndpoint->wMaxPacketSize); - inc bc - ld hl,4 - add hl, de - ld e, (hl) - inc hl - ld a, (hl) - and a,0x03 - ld d, a - ld a, e - ld (bc), a - inc bc - ld a, d - and a,0x03 - ld l,a - ld a, (bc) - and a,0xfc - or a, l - ld (bc), a -;source-doc/base-drv/enumerate.c:19: } - ld sp, ix - pop ix - ret -;source-doc/base-drv/enumerate.c:21: usb_device_type identify_class_driver(_working *const working) { -; --------------------------------- -; Function identify_class_driver -; --------------------------------- -_identify_class_driver: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/enumerate.c:22: const interface_descriptor *const p = (const interface_descriptor *)working->ptr; - ld c,(ix+4) - ld b,(ix+5) - ld hl,27 - add hl, bc - ld c, (hl) - inc hl - ld b, (hl) -;source-doc/base-drv/enumerate.c:23: if (p->bInterfaceClass == 2) - ld hl,5 - add hl,bc - ld a,(hl) - ld e,a - sub a,0x02 - jr NZ,l_identify_class_driver_00102 -;source-doc/base-drv/enumerate.c:24: return USB_IS_CDC; - ld l,0x03 - jr l_identify_class_driver_00118 -l_identify_class_driver_00102: -;source-doc/base-drv/enumerate.c:26: if (p->bInterfaceClass == 8 && (p->bInterfaceSubClass == 6 || p->bInterfaceSubClass == 5) && p->bInterfaceProtocol == 80) - ld a, e - sub a,0x08 - jr NZ,l_identify_class_driver_00199 - ld a,0x01 - jr l_identify_class_driver_00200 -l_identify_class_driver_00199: - xor a,a -l_identify_class_driver_00200: - ld d,a - or a, a - jr Z,l_identify_class_driver_00104 - ld hl,0x0006 - add hl,bc - ld a, (hl) - cp a,0x06 - jr Z,l_identify_class_driver_00107 - sub a,0x05 - jr NZ,l_identify_class_driver_00104 -l_identify_class_driver_00107: - ld hl,0x0007 - add hl,bc - ld a, (hl) - sub a,0x50 - jr NZ,l_identify_class_driver_00104 -;source-doc/base-drv/enumerate.c:27: return USB_IS_MASS_STORAGE; - ld l,0x02 - jr l_identify_class_driver_00118 -l_identify_class_driver_00104: -;source-doc/base-drv/enumerate.c:29: if (p->bInterfaceClass == 8 && p->bInterfaceSubClass == 4 && p->bInterfaceProtocol == 0) - ld a, d - or a, a - jr Z,l_identify_class_driver_00109 - ld hl,0x0006 - add hl,bc - ld a, (hl) - sub a,0x04 - jr NZ,l_identify_class_driver_00109 - ld hl,0x0007 - add hl,bc - ld a, (hl) - or a, a - jr NZ,l_identify_class_driver_00109 -;source-doc/base-drv/enumerate.c:30: return USB_IS_FLOPPY; - ld l,0x01 - jr l_identify_class_driver_00118 -l_identify_class_driver_00109: -;source-doc/base-drv/enumerate.c:32: if (p->bInterfaceClass == 9 && p->bInterfaceSubClass == 0 && p->bInterfaceProtocol == 0) - ld a, e - sub a,0x09 - jr NZ,l_identify_class_driver_00113 - ld hl,0x0006 - add hl,bc - ld a, (hl) - or a, a - jr NZ,l_identify_class_driver_00113 - ld hl,7 - add hl, bc - ld a, (hl) - or a, a - jr NZ,l_identify_class_driver_00113 -;source-doc/base-drv/enumerate.c:33: return USB_IS_HUB; - ld l,0x0f - jr l_identify_class_driver_00118 -l_identify_class_driver_00113: -;source-doc/base-drv/enumerate.c:35: if (p->bInterfaceClass == 3) - ld a, e - sub a,0x03 - jr NZ,l_identify_class_driver_00117 -;source-doc/base-drv/enumerate.c:36: return USB_IS_KEYBOARD; - ld l,0x04 - jr l_identify_class_driver_00118 -l_identify_class_driver_00117: -;source-doc/base-drv/enumerate.c:38: return USB_IS_UNKNOWN; - ld l,0x06 -l_identify_class_driver_00118: -;source-doc/base-drv/enumerate.c:39: } - pop ix - ret -;source-doc/base-drv/enumerate.c:41: usb_error op_interface_next(_working *const working) __z88dk_fastcall { -; --------------------------------- -; Function op_interface_next -; --------------------------------- -_op_interface_next: - ex de, hl -;source-doc/base-drv/enumerate.c:42: if (--working->interface_count == 0) - ld hl,0x0016 - add hl, de - ld a, (hl) - dec a - ld (hl), a -;source-doc/base-drv/enumerate.c:43: return USB_ERR_OK; - or a,a - jr NZ,l_op_interface_next_00102 - ld l,a - jr l_op_interface_next_00103 -l_op_interface_next_00102: -;source-doc/base-drv/enumerate.c:45: return op_id_class_drv(working); - ex de, hl - call _op_id_class_drv - ld l, a -l_op_interface_next_00103: -;source-doc/base-drv/enumerate.c:46: } - ret -;source-doc/base-drv/enumerate.c:48: usb_error op_endpoint_next(_working *const working) __sdcccall(1) { -; --------------------------------- -; Function op_endpoint_next -; --------------------------------- -_op_endpoint_next: - ex de, hl -;source-doc/base-drv/enumerate.c:49: if (--working->endpoint_count > 0) { - ld hl,0x0017 - add hl, de - ld a, (hl) - dec a - ld (hl), a - or a, a - jr Z,l_op_endpoint_next_00102 -;source-doc/base-drv/enumerate.c:50: working->ptr += ((endpoint_descriptor *)working->ptr)->bLength; - ld hl,0x001b - add hl, de - ld c, (hl) - inc hl - ld b, (hl) - dec hl - ld a, (bc) - add a, c - ld c, a - ld a,0x00 - adc a, b - ld (hl), c - inc hl - ld (hl), a -;source-doc/base-drv/enumerate.c:51: return op_parse_endpoint(working); - ex de, hl - jp _op_parse_endpoint - jr l_op_endpoint_next_00103 -l_op_endpoint_next_00102: -;source-doc/base-drv/enumerate.c:54: return op_interface_next(working); - ex de, hl - call _op_interface_next - ld a, l -l_op_endpoint_next_00103: -;source-doc/base-drv/enumerate.c:55: } - ret -;source-doc/base-drv/enumerate.c:57: usb_error op_parse_endpoint(_working *const working) __sdcccall(1) { -; --------------------------------- -; Function op_parse_endpoint -; --------------------------------- -_op_parse_endpoint: - push ix - ld ix,0 - add ix,sp - push af -;source-doc/base-drv/enumerate.c:58: const endpoint_descriptor *endpoint = (endpoint_descriptor *)working->ptr; - ld de,0x001c - ld c,l - ld b,h - add hl, de - ld a, (hl) - dec hl - ld l, (hl) - ld (ix-2),l - ld (ix-1),a -;source-doc/base-drv/enumerate.c:59: device_config *const device = working->p_current_device; - ld hl,29 - add hl,bc - ld e, (hl) - inc hl - ld d, (hl) -;source-doc/base-drv/enumerate.c:61: switch (working->usb_device) { - ld l, c - ld h, b - inc hl - inc hl - ld a, (hl) - cp a,0x01 - jr Z,l_op_parse_endpoint_00102 - cp a,0x02 - jr Z,l_op_parse_endpoint_00102 - sub a,0x04 - jr Z,l_op_parse_endpoint_00103 - jr l_op_parse_endpoint_00104 -;source-doc/base-drv/enumerate.c:63: case USB_IS_MASS_STORAGE: { -l_op_parse_endpoint_00102: -;source-doc/base-drv/enumerate.c:64: parse_endpoints(device, endpoint); - push bc - ld l,(ix-2) - ld h,(ix-1) - push hl - push de - call _parse_endpoints - pop af - pop af - pop bc -;source-doc/base-drv/enumerate.c:65: break; - jr l_op_parse_endpoint_00104 -;source-doc/base-drv/enumerate.c:68: case USB_IS_KEYBOARD: { -l_op_parse_endpoint_00103: -;source-doc/base-drv/enumerate.c:69: parse_endpoint_keyboard((device_config_keyboard *)device, endpoint); - ex de, hl - push bc - ld e,(ix-2) - ld d,(ix-1) - call _parse_endpoint_keyboard - pop bc -;source-doc/base-drv/enumerate.c:72: } -l_op_parse_endpoint_00104: -;source-doc/base-drv/enumerate.c:74: return op_endpoint_next(working); - ld l, c - ld h, b - call _op_endpoint_next -;source-doc/base-drv/enumerate.c:75: } - ld sp, ix - pop ix - ret -;source-doc/base-drv/enumerate.c:78: configure_device(const _working *const working, const interface_descriptor *const interface, device_config *const dev_cfg) { -; --------------------------------- -; Function configure_device -; --------------------------------- -_configure_device: - push ix - ld ix,0 - add ix,sp - push af - push af -;source-doc/base-drv/enumerate.c:79: dev_cfg->interface_number = interface->bInterfaceNumber; - ld a,(ix+8) - ld (ix-4),a - ld a,(ix+9) - ld (ix-3),a - pop bc - push bc - inc bc - inc bc - ld e,(ix+6) - ld d,(ix+7) - inc de - inc de - ld a, (de) - ld (bc), a -;source-doc/base-drv/enumerate.c:80: dev_cfg->max_packet_size = working->desc.bMaxPacketSize0; - ld a,(ix-4) - add a,0x01 - ld (ix-2),a - ld a,(ix-3) - adc a,0x00 - ld (ix-1),a - ld c,(ix+4) - ld b,(ix+5) - ld hl,10 - add hl,bc - ld a, (hl) - pop de - pop hl - push hl -;source-doc/base-drv/enumerate.c:81: dev_cfg->address = working->current_device_address; - ld (hl),a - push de - ld hl,0x0018 - add hl,bc - ld a, (hl) - add a, a - add a, a - add a, a - add a, a - ld l, a - ld a, (de) - and a,0x0f - or a, l - ld (de), a -;source-doc/base-drv/enumerate.c:82: dev_cfg->type = working->usb_device; - pop de - push de - ld l, c - ld h, b - inc hl - inc hl - ld a, (hl) - and a,0x0f - ld l, a - ld a, (de) - and a,0xf0 - or a, l - ld (de), a -;source-doc/base-drv/enumerate.c:84: return usbtrn_set_configuration(dev_cfg->address, dev_cfg->max_packet_size, working->config.desc.bConfigurationvalue); - ld hl,36 - add hl, bc - ld b, (hl) - ld l,(ix-2) - ld h,(ix-1) - ld d, (hl) - pop hl - ld a,(hl) - push hl - rlca - rlca - rlca - rlca - and a,0x0f - ld c, d - push bc - push af - inc sp - call _usbtrn_set_configuration -;source-doc/base-drv/enumerate.c:85: } - ld sp,ix - pop ix - ret -;source-doc/base-drv/enumerate.c:87: usb_error op_capture_hub_driver_interface(_working *const working) __sdcccall(1) { -; --------------------------------- -; Function op_capture_hub_driver_interface -; --------------------------------- -_op_capture_hub_driver_interface: - push ix - ld ix,0 - add ix,sp - push af - push af - push af - dec sp - ex de, hl -;source-doc/base-drv/enumerate.c:88: const interface_descriptor *const interface = (interface_descriptor *)working->ptr; - ld hl,0x001c - add hl,de - ld a, (hl) - dec hl - ld l, (hl) - ld (ix-4),l - ld (ix-3),a -;source-doc/base-drv/enumerate.c:92: working->hub_config = &hub_config; - ld hl,0x0019 - add hl, de - ld (ix-2),l - ld (ix-1),h - ld hl,0 - add hl, sp - ld c, l - ld l,(ix-2) - ld b,h - ld h,(ix-1) - ld (hl), c - inc hl - ld (hl), b -;source-doc/base-drv/enumerate.c:94: hub_config.type = USB_IS_HUB; - ld hl,0 - add hl, sp - ld a, (hl) - or a,0x0f - ld (hl), a -;source-doc/base-drv/enumerate.c:95: CHECK(configure_device(working, interface, (device_config *const)&hub_config)); - push de - ld hl,2 - add hl, sp - push hl - ld l,(ix-4) - ld h,(ix-3) - push hl - push de - call _configure_device - pop af - pop af - pop af - pop de - ld a, l - inc l - dec l - jr NZ,l_op_capture_hub_driver_interface_00103 -;source-doc/base-drv/enumerate.c:96: RETURN_CHECK(configure_usb_hub(working)); - ex de, hl - call _configure_usb_hub - ld a, l -;source-doc/base-drv/enumerate.c:97: done: -l_op_capture_hub_driver_interface_00103: -;source-doc/base-drv/enumerate.c:98: return result; -;source-doc/base-drv/enumerate.c:99: } - ld sp, ix - pop ix - ret -;source-doc/base-drv/enumerate.c:101: usb_error op_cap_drv_intf(_working *const working) __z88dk_fastcall { -; --------------------------------- -; Function op_cap_drv_intf -; --------------------------------- -_op_cap_drv_intf: - push ix - ld ix,0 - add ix,sp - ld c, l - ld b, h - ld hl, -16 - add hl, sp - ld sp, hl -;source-doc/base-drv/enumerate.c:104: const interface_descriptor *const interface = (interface_descriptor *)working->ptr; - ld (ix-2),c - ld l, c - ld (ix-1),b - ld h,b - ld de,0x001b - add hl, de - ld e, (hl) - inc hl - ld d, (hl) - dec hl - ld c, e - ld b, d -;source-doc/base-drv/enumerate.c:106: working->ptr += interface->bLength; - ld a, (bc) - add a, e - ld e, a - ld a,0x00 - adc a, d - ld (hl), e - inc hl - ld (hl), a -;source-doc/base-drv/enumerate.c:107: working->endpoint_count = interface->bNumEndpoints; - ld a,(ix-2) - add a,0x17 - ld e, a - ld a,(ix-1) - adc a,0x00 - ld d, a - ld l, c - ld h, b - inc hl - inc hl - inc hl - inc hl - ld a, (hl) - ld (de), a -;source-doc/base-drv/enumerate.c:108: working->p_current_device = NULL; - ld a,(ix-2) - add a,0x1d - ld (ix-4),a - ld l,a - ld a,(ix-1) - adc a,0x00 - ld (ix-3),a - ld h,a - xor a, a - ld (hl), a - inc hl - ld (hl), a -;source-doc/base-drv/enumerate.c:110: switch (working->usb_device) { - ld l,(ix-2) - ld h,(ix-1) - inc hl - inc hl - ld a, (hl) - cp a,0x06 - jr Z,l_op_cap_drv_intf_00104 - sub a,0x0f - jr NZ,l_op_cap_drv_intf_00107 -;source-doc/base-drv/enumerate.c:112: CHECK(op_capture_hub_driver_interface(working)) - ld l,(ix-2) - ld h,(ix-1) - call _op_capture_hub_driver_interface - or a, a - jr Z,l_op_cap_drv_intf_00112 - jr l_op_cap_drv_intf_00113 -;source-doc/base-drv/enumerate.c:116: case USB_IS_UNKNOWN: { -l_op_cap_drv_intf_00104: -;source-doc/base-drv/enumerate.c:118: memset(&unkown_dev_cfg, 0, sizeof(device_config)); - push bc - ld hl,2 - add hl, sp - ld b,0x06 -l_op_cap_drv_intf_00154: - xor a, a - ld (hl), a - inc hl - ld (hl), a - inc hl - djnz l_op_cap_drv_intf_00154 - pop bc -;source-doc/base-drv/enumerate.c:119: working->p_current_device = &unkown_dev_cfg; - ld hl,0 - add hl, sp - ex de, hl - ld l,(ix-4) - ld h,(ix-3) - ld (hl), e - inc hl - ld (hl), d -;source-doc/base-drv/enumerate.c:120: CHECK(configure_device(working, interface, &unkown_dev_cfg)); - ld hl,0 - add hl, sp - push hl - push bc - ld l,(ix-2) - ld h,(ix-1) - push hl - call _configure_device - pop af - pop af - pop af - ld a, l - or a, a - jr Z,l_op_cap_drv_intf_00112 - jr l_op_cap_drv_intf_00113 -;source-doc/base-drv/enumerate.c:124: default: { -l_op_cap_drv_intf_00107: -;source-doc/base-drv/enumerate.c:125: device_config *dev_cfg = find_first_free(); - push bc - call _find_first_free -;source-doc/base-drv/enumerate.c:126: if (dev_cfg == NULL) - pop bc - ld a,h - or a,l - ex de,hl - jr NZ,l_op_cap_drv_intf_00109 -;source-doc/base-drv/enumerate.c:127: return USB_ERR_OUT_OF_MEMORY; - ld l,0x83 - jr l_op_cap_drv_intf_00114 -l_op_cap_drv_intf_00109: -;source-doc/base-drv/enumerate.c:128: working->p_current_device = dev_cfg; - ld l,(ix-4) - ld h,(ix-3) - ld (hl), e - inc hl - ld (hl), d -;source-doc/base-drv/enumerate.c:129: CHECK(configure_device(working, interface, dev_cfg)); - push de - push bc - ld l,(ix-2) - ld h,(ix-1) - push hl - call _configure_device - pop af - pop af - pop af - ld a, l - or a, a - jr NZ,l_op_cap_drv_intf_00113 -;source-doc/base-drv/enumerate.c:132: } -l_op_cap_drv_intf_00112: -;source-doc/base-drv/enumerate.c:134: result = op_parse_endpoint(working); - ld l,(ix-2) - ld h,(ix-1) - call _op_parse_endpoint -;source-doc/base-drv/enumerate.c:136: done: -l_op_cap_drv_intf_00113: -;source-doc/base-drv/enumerate.c:137: return result; - ld l, a -l_op_cap_drv_intf_00114: -;source-doc/base-drv/enumerate.c:138: } - ld sp, ix - pop ix - ret -;source-doc/base-drv/enumerate.c:140: usb_error op_id_class_drv(_working *const working) __sdcccall(1) { -; --------------------------------- -; Function op_id_class_drv -; --------------------------------- -_op_id_class_drv: - ex de, hl -;source-doc/base-drv/enumerate.c:141: const interface_descriptor *const ptr = (const interface_descriptor *)working->ptr; - ld hl,0x001c - add hl,de - ld a, (hl) - dec hl - ld l, (hl) -;source-doc/base-drv/enumerate.c:143: working->usb_device = ptr->bLength > 5 ? identify_class_driver(working) : 0; - ld c, e - ld b, d - inc bc - inc bc - ld h, a - ld l, (hl) - ld a,0x05 - sub a, l - jr NC,l_op_id_class_drv_00103 - push bc - push de - push de - call _identify_class_driver - pop af - ld a, l - pop de - pop bc - jr l_op_id_class_drv_00104 -l_op_id_class_drv_00103: - xor a, a -l_op_id_class_drv_00104: - ld (bc), a -;source-doc/base-drv/enumerate.c:145: return op_cap_drv_intf(working); - ex de, hl - call _op_cap_drv_intf - ld a, l -;source-doc/base-drv/enumerate.c:146: } - ret -;source-doc/base-drv/enumerate.c:148: usb_error op_get_cfg_desc(_working *const working) __sdcccall(1) { -; --------------------------------- -; Function op_get_cfg_desc -; --------------------------------- -_op_get_cfg_desc: - push ix - ld ix,0 - add ix,sp - push af - ex de, hl -;source-doc/base-drv/enumerate.c:149: memset(working->config.buffer, 0, MAX_CONFIG_SIZE); - ld hl,0x001f - add hl, de - pop af - push hl - ld b,0x46 -l_op_get_cfg_desc_00113: - xor a, a - ld (hl), a - inc hl - ld (hl), a - inc hl - djnz l_op_get_cfg_desc_00113 -;source-doc/base-drv/enumerate.c:151: const uint8_t max_packet_size = working->desc.bMaxPacketSize0; - ld c, e - ld b, d - inc bc - inc bc - inc bc - ld hl,7 - add hl, bc - ld a, (hl) -;source-doc/base-drv/enumerate.c:154: working->config.buffer)); - ld c, e - ld b, d - ld hl,24 - add hl, bc - ld b, (hl) - ld l, e - ld h, d - push bc - ld bc,0x0015 - add hl, bc - pop bc - ld c, (hl) - push de - ld l,(ix-2) - ld h,(ix-1) - push hl - ld h,0x8c - ld l,a - push hl - push bc - call _usbtrn_gfull_cfg_desc - pop af - pop af - pop af - pop de - ld a, l - ld (_result), a - ld a,(_result) - or a, a - jr NZ,l_op_get_cfg_desc_00103 -;source-doc/base-drv/enumerate.c:156: working->ptr = (working->config.buffer + sizeof(config_descriptor)); - ld hl,0x001b - add hl, de - ld a, e - add a,0x1f - ld c, a - ld a, d - adc a,0x00 - ld b, a - ld a, c - add a,0x09 - ld c, a - ld a, b - adc a,0x00 - ld (hl), c - inc hl - ld (hl), a -;source-doc/base-drv/enumerate.c:157: working->interface_count = working->config.desc.bNumInterfaces; - ld hl,0x0016 - add hl, de - ld c, l - ld b, h - pop hl - push hl - inc hl - inc hl - inc hl - inc hl - ld a, (hl) - ld (bc), a -;source-doc/base-drv/enumerate.c:159: return op_id_class_drv(working); - ex de, hl - call _op_id_class_drv - jr l_op_get_cfg_desc_00104 -;source-doc/base-drv/enumerate.c:160: done: -l_op_get_cfg_desc_00103: -;source-doc/base-drv/enumerate.c:161: return result; - ld hl,_result - ld a, (hl) -l_op_get_cfg_desc_00104: -;source-doc/base-drv/enumerate.c:162: } - ld sp, ix - pop ix - ret -;source-doc/base-drv/enumerate.c:164: usb_error read_all_configs(enumeration_state *const state) { -; --------------------------------- -; Function read_all_configs -; --------------------------------- -_read_all_configs: - push ix - ld ix,0 - add ix,sp - ld hl, -171 - add hl, sp - ld sp, hl -;source-doc/base-drv/enumerate.c:169: memset(&working, 0, sizeof(_working)); - ld hl,0 - add hl, sp - ld (hl),0x00 - ld e, l - ld d, h - inc de - ld bc,0x00aa - ldir -;source-doc/base-drv/enumerate.c:170: working.state = state; - ld a,(ix+4) - ld hl,0 - add hl, sp - ld (hl), a - ld a,(ix+5) - inc hl - ld (hl), a -;source-doc/base-drv/enumerate.c:172: CHECK(usbtrn_get_descriptor(&working.desc)); - ld hl,3 - add hl, sp - push hl - call _usbtrn_get_descriptor - pop af - ld a, l - or a, a - jr NZ,l_read_all_configs_00108 -;source-doc/base-drv/enumerate.c:174: state->next_device_address++; - ld e,(ix+4) - ld d,(ix+5) - ld a, (de) - inc a - ld c,a - ld (de), a -;source-doc/base-drv/enumerate.c:175: working.current_device_address = state->next_device_address; - ld hl,24 - add hl, sp - ld (hl), c -;source-doc/base-drv/enumerate.c:176: CHECK(usbtrn_set_address(working.current_device_address)); - ld l, c - call _usbtrn_set_address - ld a, l -;source-doc/base-drv/enumerate.c:178: for (uint8_t config_index = 0; config_index < working.desc.bNumConfigurations; config_index++) { - or a,a - jr NZ,l_read_all_configs_00108 - ld c,a -l_read_all_configs_00110: - ld hl,20 - add hl, sp - ld b, (hl) - ld a, c - sub a, b - jr NC,l_read_all_configs_00107 -;source-doc/base-drv/enumerate.c:179: working.config_index = config_index; - inc hl - ld (hl), c -;source-doc/base-drv/enumerate.c:181: CHECK(op_get_cfg_desc(&working)); - push bc - ld hl,2 - add hl, sp - call _op_get_cfg_desc - pop bc - or a, a - jr NZ,l_read_all_configs_00108 -;source-doc/base-drv/enumerate.c:178: for (uint8_t config_index = 0; config_index < working.desc.bNumConfigurations; config_index++) { - inc c - jr l_read_all_configs_00110 -l_read_all_configs_00107: -;source-doc/base-drv/enumerate.c:184: return USB_ERR_OK; - ld l,0x00 - jr l_read_all_configs_00112 -;source-doc/base-drv/enumerate.c:185: done: -l_read_all_configs_00108: -;source-doc/base-drv/enumerate.c:186: return result; - ld l, a -l_read_all_configs_00112: -;source-doc/base-drv/enumerate.c:187: } - ld sp, ix - pop ix - ret -;source-doc/base-drv/enumerate.c:189: usb_error enumerate_all_devices(void) { -; --------------------------------- -; Function enumerate_all_devices -; --------------------------------- -_enumerate_all_devices: - push ix - dec sp -;source-doc/base-drv/enumerate.c:190: _usb_state *const work_area = get_usb_work_area(); -;source-doc/base-drv/enumerate.c:192: memset(&state, 0, sizeof(enumeration_state)); - ld hl,0 - add hl, sp - ld e,l - ld d,h -;source-doc/base-drv/enumerate.c:193: state.next_device_address = 0; - xor a,a - ld (hl),a - ld (de), a -;source-doc/base-drv/enumerate.c:195: usb_error result = read_all_configs(&state); - push de - push de - call _read_all_configs - pop af - ld c, l - pop de -;source-doc/base-drv/enumerate.c:197: work_area->count_of_detected_usb_devices = state.next_device_address; - ld a, (de) - ld ((_x + 1)),a -;source-doc/base-drv/enumerate.c:200: return result; - ld l, c -;source-doc/base-drv/enumerate.c:201: } - inc sp - pop ix - ret - SECTION IGNORE diff --git a/Source/HBIOS/ch376-native/base-drv/transfers.c.asm b/Source/HBIOS/ch376-native/base-drv/transfers.c.asm deleted file mode 100644 index 0bc83830..00000000 --- a/Source/HBIOS/ch376-native/base-drv/transfers.c.asm +++ /dev/null @@ -1,829 +0,0 @@ -;-------------------------------------------------------- -; File Created by SDCC : free open source ISO C Compiler -; Version 4.4.0 #14648 (Linux) -;-------------------------------------------------------- -; Processed by Z88DK -;-------------------------------------------------------- - - EXTERN __divschar - EXTERN __divschar_callee - EXTERN __divsint - EXTERN __divsint_callee - EXTERN __divslong - EXTERN __divslong_callee - EXTERN __divslonglong - EXTERN __divslonglong_callee - EXTERN __divsuchar - EXTERN __divsuchar_callee - EXTERN __divuchar - EXTERN __divuchar_callee - EXTERN __divuint - EXTERN __divuint_callee - EXTERN __divulong - EXTERN __divulong_callee - EXTERN __divulonglong - EXTERN __divulonglong_callee - EXTERN __divuschar - EXTERN __divuschar_callee - EXTERN __modschar - EXTERN __modschar_callee - EXTERN __modsint - EXTERN __modsint_callee - EXTERN __modslong - EXTERN __modslong_callee - EXTERN __modslonglong - EXTERN __modslonglong_callee - EXTERN __modsuchar - EXTERN __modsuchar_callee - EXTERN __moduchar - EXTERN __moduchar_callee - EXTERN __moduint - EXTERN __moduint_callee - EXTERN __modulong - EXTERN __modulong_callee - EXTERN __modulonglong - EXTERN __modulonglong_callee - EXTERN __moduschar - EXTERN __moduschar_callee - EXTERN __mulint - EXTERN __mulint_callee - EXTERN __mullong - EXTERN __mullong_callee - EXTERN __mullonglong - EXTERN __mullonglong_callee - EXTERN __mulschar - EXTERN __mulschar_callee - EXTERN __mulsuchar - EXTERN __mulsuchar_callee - EXTERN __muluchar - EXTERN __muluchar_callee - EXTERN __muluschar - EXTERN __muluschar_callee - EXTERN __rlslonglong - EXTERN __rlslonglong_callee - EXTERN __rlulonglong - EXTERN __rlulonglong_callee - EXTERN __rrslonglong - EXTERN __rrslonglong_callee - EXTERN __rrulonglong - EXTERN __rrulonglong_callee - EXTERN ___mulsint2slong - EXTERN ___mulsint2slong_callee - EXTERN ___muluint2ulong - EXTERN ___muluint2ulong_callee - EXTERN ___sdcc_call_hl - EXTERN ___sdcc_call_iy - EXTERN ___sdcc_enter_ix - EXTERN banked_call - EXTERN _banked_ret - EXTERN ___fs2schar - EXTERN ___fs2schar_callee - EXTERN ___fs2sint - EXTERN ___fs2sint_callee - EXTERN ___fs2slong - EXTERN ___fs2slong_callee - EXTERN ___fs2slonglong - EXTERN ___fs2slonglong_callee - EXTERN ___fs2uchar - EXTERN ___fs2uchar_callee - EXTERN ___fs2uint - EXTERN ___fs2uint_callee - EXTERN ___fs2ulong - EXTERN ___fs2ulong_callee - EXTERN ___fs2ulonglong - EXTERN ___fs2ulonglong_callee - EXTERN ___fsadd - EXTERN ___fsadd_callee - EXTERN ___fsdiv - EXTERN ___fsdiv_callee - EXTERN ___fseq - EXTERN ___fseq_callee - EXTERN ___fsgt - EXTERN ___fsgt_callee - EXTERN ___fslt - EXTERN ___fslt_callee - EXTERN ___fsmul - EXTERN ___fsmul_callee - EXTERN ___fsneq - EXTERN ___fsneq_callee - EXTERN ___fssub - EXTERN ___fssub_callee - EXTERN ___schar2fs - EXTERN ___schar2fs_callee - EXTERN ___sint2fs - EXTERN ___sint2fs_callee - EXTERN ___slong2fs - EXTERN ___slong2fs_callee - EXTERN ___slonglong2fs - EXTERN ___slonglong2fs_callee - EXTERN ___uchar2fs - EXTERN ___uchar2fs_callee - EXTERN ___uint2fs - EXTERN ___uint2fs_callee - EXTERN ___ulong2fs - EXTERN ___ulong2fs_callee - EXTERN ___ulonglong2fs - EXTERN ___ulonglong2fs_callee - EXTERN ____sdcc_2_copy_src_mhl_dst_deix - EXTERN ____sdcc_2_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_deix - EXTERN ____sdcc_4_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_mbc - EXTERN ____sdcc_4_ldi_nosave_bc - EXTERN ____sdcc_4_ldi_save_bc - EXTERN ____sdcc_4_push_hlix - EXTERN ____sdcc_4_push_mhl - EXTERN ____sdcc_lib_setmem_hl - EXTERN ____sdcc_ll_add_de_bc_hl - EXTERN ____sdcc_ll_add_de_bc_hlix - EXTERN ____sdcc_ll_add_de_hlix_bc - EXTERN ____sdcc_ll_add_de_hlix_bcix - EXTERN ____sdcc_ll_add_deix_bc_hl - EXTERN ____sdcc_ll_add_deix_hlix - EXTERN ____sdcc_ll_add_hlix_bc_deix - EXTERN ____sdcc_ll_add_hlix_deix_bc - EXTERN ____sdcc_ll_add_hlix_deix_bcix - EXTERN ____sdcc_ll_asr_hlix_a - EXTERN ____sdcc_ll_asr_mbc_a - EXTERN ____sdcc_ll_copy_src_de_dst_hlix - EXTERN ____sdcc_ll_copy_src_de_dst_hlsp - EXTERN ____sdcc_ll_copy_src_deix_dst_hl - EXTERN ____sdcc_ll_copy_src_deix_dst_hlix - EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp - EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp - EXTERN ____sdcc_ll_copy_src_hl_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm - EXTERN ____sdcc_ll_lsl_hlix_a - EXTERN ____sdcc_ll_lsl_mbc_a - EXTERN ____sdcc_ll_lsr_hlix_a - EXTERN ____sdcc_ll_lsr_mbc_a - EXTERN ____sdcc_ll_push_hlix - EXTERN ____sdcc_ll_push_mhl - EXTERN ____sdcc_ll_sub_de_bc_hl - EXTERN ____sdcc_ll_sub_de_bc_hlix - EXTERN ____sdcc_ll_sub_de_hlix_bc - EXTERN ____sdcc_ll_sub_de_hlix_bcix - EXTERN ____sdcc_ll_sub_deix_bc_hl - EXTERN ____sdcc_ll_sub_deix_hlix - EXTERN ____sdcc_ll_sub_hlix_bc_deix - EXTERN ____sdcc_ll_sub_hlix_deix_bc - EXTERN ____sdcc_ll_sub_hlix_deix_bcix - EXTERN ____sdcc_load_debc_deix - EXTERN ____sdcc_load_dehl_deix - EXTERN ____sdcc_load_debc_mhl - EXTERN ____sdcc_load_hlde_mhl - EXTERN ____sdcc_store_dehl_bcix - EXTERN ____sdcc_store_debc_hlix - EXTERN ____sdcc_store_debc_mhl - EXTERN ____sdcc_cpu_pop_ei - EXTERN ____sdcc_cpu_pop_ei_jp - EXTERN ____sdcc_cpu_push_di - EXTERN ____sdcc_outi - EXTERN ____sdcc_outi_128 - EXTERN ____sdcc_outi_256 - EXTERN ____sdcc_ldi - EXTERN ____sdcc_ldi_128 - EXTERN ____sdcc_ldi_256 - EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_dehl_dst_bcix - EXTERN ____sdcc_4_and_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_cpl_src_mhl_dst_debc - EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc - -;-------------------------------------------------------- -; Public variables in this module -;-------------------------------------------------------- - GLOBAL _usb_dat_in_trns_n_ext - GLOBAL _usb_dat_in_trnsfer_ext - GLOBAL _usb_ctrl_trnsfer_ext - GLOBAL _usb_control_transfer - GLOBAL _usb_data_in_transfer - GLOBAL _usb_data_in_transfer_n - GLOBAL _usb_data_out_transfer -;-------------------------------------------------------- -; Externals used -;-------------------------------------------------------- - GLOBAL _critical_end - GLOBAL _critical_begin - GLOBAL _print_uint16 - GLOBAL _print_string - GLOBAL _print_hex - GLOBAL _ch_issue_token_in_ep0 - GLOBAL _ch_issue_token_out_ep0 - GLOBAL _ch_issue_token_setup - GLOBAL _ch_data_out_transfer - GLOBAL _ch_data_in_transfer_n - GLOBAL _ch_data_in_transfer - GLOBAL _ch_control_transfer_set_config - GLOBAL _ch_control_transfer_set_address - GLOBAL _ch_control_transfer_request_descriptor - GLOBAL _ch_set_usb_address - GLOBAL _ch_write_data - GLOBAL _ch_cmd_get_ic_version - GLOBAL _ch_cmd_set_usb_mode - GLOBAL _ch_probe - GLOBAL _ch_cmd_reset_all - GLOBAL _ch_read_data - GLOBAL _ch_very_short_wait_int_and_get_status - GLOBAL _ch_short_wait_int_and_get_status - GLOBAL _ch_long_wait_int_and_get_status - GLOBAL _ch_get_status - GLOBAL _ch_command - GLOBAL _delay_medium - GLOBAL _delay_short - GLOBAL _delay_20ms - GLOBAL _printf - GLOBAL _delay - GLOBAL _ulltoa_callee - GLOBAL _ulltoa - GLOBAL _strtoull_callee - GLOBAL _strtoull - GLOBAL _strtoll_callee - GLOBAL _strtoll - GLOBAL _lltoa_callee - GLOBAL _lltoa - GLOBAL _llabs_callee - GLOBAL _llabs - GLOBAL __lldivu__callee - GLOBAL __lldivu_ - GLOBAL __lldiv__callee - GLOBAL __lldiv_ - GLOBAL _atoll_callee - GLOBAL _atoll - GLOBAL _realloc_unlocked_callee - GLOBAL _realloc_unlocked - GLOBAL _malloc_unlocked_fastcall - GLOBAL _malloc_unlocked - GLOBAL _free_unlocked_fastcall - GLOBAL _free_unlocked - GLOBAL _calloc_unlocked_callee - GLOBAL _calloc_unlocked - GLOBAL _aligned_alloc_unlocked_callee - GLOBAL _aligned_alloc_unlocked - GLOBAL _realloc_callee - GLOBAL _realloc - GLOBAL _malloc_fastcall - GLOBAL _malloc - GLOBAL _free_fastcall - GLOBAL _free - GLOBAL _calloc_callee - GLOBAL _calloc - GLOBAL _aligned_alloc_callee - GLOBAL _aligned_alloc - GLOBAL _utoa_callee - GLOBAL _utoa - GLOBAL _ultoa_callee - GLOBAL _ultoa - GLOBAL _system_fastcall - GLOBAL _system - GLOBAL _strtoul_callee - GLOBAL _strtoul - GLOBAL _strtol_callee - GLOBAL _strtol - GLOBAL _strtof_callee - GLOBAL _strtof - GLOBAL _strtod_callee - GLOBAL _strtod - GLOBAL _srand_fastcall - GLOBAL _srand - GLOBAL _rand - GLOBAL _quick_exit_fastcall - GLOBAL _quick_exit - GLOBAL _qsort_callee - GLOBAL _qsort - GLOBAL _ltoa_callee - GLOBAL _ltoa - GLOBAL _labs_fastcall - GLOBAL _labs - GLOBAL _itoa_callee - GLOBAL _itoa - GLOBAL _ftoh_callee - GLOBAL _ftoh - GLOBAL _ftog_callee - GLOBAL _ftog - GLOBAL _ftoe_callee - GLOBAL _ftoe - GLOBAL _ftoa_callee - GLOBAL _ftoa - GLOBAL _exit_fastcall - GLOBAL _exit - GLOBAL _dtoh_callee - GLOBAL _dtoh - GLOBAL _dtog_callee - GLOBAL _dtog - GLOBAL _dtoe_callee - GLOBAL _dtoe - GLOBAL _dtoa_callee - GLOBAL _dtoa - GLOBAL _bsearch_callee - GLOBAL _bsearch - GLOBAL _atol_fastcall - GLOBAL _atol - GLOBAL _atoi_fastcall - GLOBAL _atoi - GLOBAL _atof_fastcall - GLOBAL _atof - GLOBAL _atexit_fastcall - GLOBAL _atexit - GLOBAL _at_quick_exit_fastcall - GLOBAL _at_quick_exit - GLOBAL _abs_fastcall - GLOBAL _abs - GLOBAL _abort - GLOBAL __strtou__callee - GLOBAL __strtou_ - GLOBAL __strtoi__callee - GLOBAL __strtoi_ - GLOBAL __random_uniform_xor_8__fastcall - GLOBAL __random_uniform_xor_8_ - GLOBAL __random_uniform_xor_32__fastcall - GLOBAL __random_uniform_xor_32_ - GLOBAL __random_uniform_cmwc_8__fastcall - GLOBAL __random_uniform_cmwc_8_ - GLOBAL __shellsort__callee - GLOBAL __shellsort_ - GLOBAL __quicksort__callee - GLOBAL __quicksort_ - GLOBAL __insertion_sort__callee - GLOBAL __insertion_sort_ - GLOBAL __ldivu__callee - GLOBAL __ldivu_ - GLOBAL __ldiv__callee - GLOBAL __ldiv_ - GLOBAL __divu__callee - GLOBAL __divu_ - GLOBAL __div__callee - GLOBAL __div_ - GLOBAL _in_critical_usb_section - GLOBAL _result -;-------------------------------------------------------- -; special function registers -;-------------------------------------------------------- -defc _CH376_DATA_PORT = 0xff88 -defc _CH376_COMMAND_PORT = 0xff89 -defc _USB_MODULE_LEDS = 0xff8a -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - SECTION bss_compiler -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - -IF 0 - -; .area _INITIALIZED removed by z88dk - - -ENDIF - -;-------------------------------------------------------- -; absolute external ram data -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; global & static initialisations -;-------------------------------------------------------- - SECTION code_crt_init -;-------------------------------------------------------- -; Home -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; code -;-------------------------------------------------------- - SECTION code_compiler -;source-doc/base-drv/transfers.c:24: usb_error usb_ctrl_trnsfer_ext(const setup_packet *const cmd_packet, -; --------------------------------- -; Function usb_ctrl_trnsfer_ext -; --------------------------------- -_usb_ctrl_trnsfer_ext: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/transfers.c:28: if ((uint16_t)cmd_packet < LOWER_SAFE_RAM_ADDRESS) - ld a,(ix+5) - sub a,0x80 - jr NC,l_usb_ctrl_trnsfer_ext_00102 -;source-doc/base-drv/transfers.c:29: return USB_BAD_ADDRESS; - ld l,0x82 - jr l_usb_ctrl_trnsfer_ext_00106 -l_usb_ctrl_trnsfer_ext_00102: -;source-doc/base-drv/transfers.c:31: if (buffer != 0 && (uint16_t)buffer < LOWER_SAFE_RAM_ADDRESS) - ld a,(ix+7) - or a,(ix+6) - jr Z,l_usb_ctrl_trnsfer_ext_00104 - ld a,(ix+7) - sub a,0x80 - jr NC,l_usb_ctrl_trnsfer_ext_00104 -;source-doc/base-drv/transfers.c:32: return USB_BAD_ADDRESS; - ld l,0x82 - jr l_usb_ctrl_trnsfer_ext_00106 -l_usb_ctrl_trnsfer_ext_00104: -;source-doc/base-drv/transfers.c:34: return usb_control_transfer(cmd_packet, buffer, device_address, max_packet_size); - ld h,(ix+9) - ld l,(ix+8) - push hl - ld l,(ix+6) - ld h,(ix+7) - push hl - ld l,(ix+4) - ld h,(ix+5) - push hl - call _usb_control_transfer - pop af - pop af - pop af -l_usb_ctrl_trnsfer_ext_00106: -;source-doc/base-drv/transfers.c:35: } - pop ix - ret -;source-doc/base-drv/transfers.c:47: usb_error usb_control_transfer(const setup_packet *const cmd_packet, -; --------------------------------- -; Function usb_control_transfer -; --------------------------------- -_usb_control_transfer: - push ix - ld ix,0 - add ix,sp - push af - push af -;source-doc/base-drv/transfers.c:52: endpoint_param endpoint = {1, 0, max_packet_size}; - ld hl,0 - add hl, sp - set 0, (hl) - ld hl,0 - add hl, sp - ld a, (hl) - and a,0xf1 - ld (hl), a - ld c,(ix+9) - ld b,0x00 - ld hl,1 - add hl, sp - ld (hl), c - inc hl - ld a, b - and a,0x03 - ld e,a - ld a, (hl) - and a,0xfc - or a, e - ld (hl), a -;source-doc/base-drv/transfers.c:54: const uint8_t transferIn = (cmd_packet->bmRequestType & 0x80); - ld c,(ix+4) - ld b,(ix+5) - ld a, (bc) - and a,0x80 -;source-doc/base-drv/transfers.c:56: if (transferIn && buffer == 0) - ld (ix-1),a - or a, a - jr Z,l_usb_control_transfer_00102 - ld a,(ix+7) - or a,(ix+6) - jr NZ,l_usb_control_transfer_00102 -;source-doc/base-drv/transfers.c:57: return USB_ERR_OTHER; - ld l,0x0f - jp l_usb_control_transfer_00114 -l_usb_control_transfer_00102: -;source-doc/base-drv/transfers.c:59: critical_begin(); - push bc - call _critical_begin - ld l,(ix+8) - call _ch_set_usb_address - pop bc -;source-doc/base-drv/transfers.c:63: ch_write_data((const uint8_t *)cmd_packet, sizeof(setup_packet)); - ld e,(ix+4) - ld d,(ix+5) - push bc - ld a,0x08 - push af - inc sp - push de - call _ch_write_data - pop af - inc sp - call _ch_issue_token_setup - call _ch_short_wait_int_and_get_status - pop bc -;source-doc/base-drv/transfers.c:66: CHECK(result); - ld a, l - or a, a - jr NZ,l_usb_control_transfer_00113 -;source-doc/base-drv/transfers.c:68: const uint16_t length = cmd_packet->wLength; - ld hl,6 - add hl, bc - ld c, (hl) - inc hl -;source-doc/base-drv/transfers.c:71: ? (transferIn ? ch_data_in_transfer(buffer, length, &endpoint) : ch_data_out_transfer(buffer, length, &endpoint)) - ld a,(hl) - ld b,a - or a, c - jr Z,l_usb_control_transfer_00116 - ld e,(ix+6) - ld d,(ix+7) - ld a,(ix-1) - or a, a - jr Z,l_usb_control_transfer_00118 - ld hl,0 - add hl, sp - push hl - push bc - push de - call _ch_data_in_transfer - pop af - pop af - pop af - jr l_usb_control_transfer_00119 -l_usb_control_transfer_00118: - ld hl,0 - add hl, sp - push hl - push bc - push de - call _ch_data_out_transfer - pop af - pop af - pop af -l_usb_control_transfer_00119: - jr l_usb_control_transfer_00117 -l_usb_control_transfer_00116: -;source-doc/base-drv/transfers.c:72: : USB_ERR_OK; - ld l,0x00 -l_usb_control_transfer_00117: -;source-doc/base-drv/transfers.c:74: CHECK(result) - ld a, l - or a, a - jr NZ,l_usb_control_transfer_00113 -;source-doc/base-drv/transfers.c:76: if (transferIn) { - ld a,(ix-1) - or a, a - jr Z,l_usb_control_transfer_00112 -;source-doc/base-drv/transfers.c:77: ch_command(CH_CMD_WR_HOST_DATA); - ld l,0x2c - call _ch_command -;source-doc/base-drv/transfers.c:78: CH376_DATA_PORT = 0; - ld a,0x00 - ld bc,_CH376_DATA_PORT - out (c),a -;source-doc/base-drv/transfers.c:79: ch_issue_token_out_ep0(); - call _ch_issue_token_out_ep0 -;source-doc/base-drv/transfers.c:80: result = ch_long_wait_int_and_get_status(); /* sometimes we get STALL here - seems to be ok to ignore */ - call _ch_long_wait_int_and_get_status -;source-doc/base-drv/transfers.c:82: if (result == USB_ERR_OK || result == USB_ERR_STALL) { - ld a,l - or a, a - jr Z,l_usb_control_transfer_00108 - sub a,0x02 - jr NZ,l_usb_control_transfer_00113 -l_usb_control_transfer_00108: -;source-doc/base-drv/transfers.c:83: result = USB_ERR_OK; - ld l,0x00 -;source-doc/base-drv/transfers.c:84: goto done; - jr l_usb_control_transfer_00113 -;source-doc/base-drv/transfers.c:87: RETURN_CHECK(result); -l_usb_control_transfer_00112: -;source-doc/base-drv/transfers.c:90: ch_issue_token_in_ep0(); - call _ch_issue_token_in_ep0 -;source-doc/base-drv/transfers.c:91: result = ch_long_wait_int_and_get_status(); - call _ch_long_wait_int_and_get_status -;source-doc/base-drv/transfers.c:95: done: -l_usb_control_transfer_00113: -;source-doc/base-drv/transfers.c:96: critical_end(); - push hl - call _critical_end - pop hl -;source-doc/base-drv/transfers.c:97: return result; -l_usb_control_transfer_00114: -;source-doc/base-drv/transfers.c:98: } - ld sp, ix - pop ix - ret -;source-doc/base-drv/transfers.c:101: usb_dat_in_trnsfer_ext(uint8_t *buffer, const uint16_t buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { -; --------------------------------- -; Function usb_dat_in_trnsfer_ext -; --------------------------------- -_usb_dat_in_trnsfer_ext: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/transfers.c:102: if (buffer != 0 && (uint16_t)buffer < LOWER_SAFE_RAM_ADDRESS) - ld a,(ix+5) - or a,(ix+4) - jr Z,l_usb_dat_in_trnsfer_ext_00102 - ld a,(ix+5) - sub a,0x80 - jr NC,l_usb_dat_in_trnsfer_ext_00102 -;source-doc/base-drv/transfers.c:103: return USB_BAD_ADDRESS; - ld l,0x82 - jr l_usb_dat_in_trnsfer_ext_00106 -l_usb_dat_in_trnsfer_ext_00102: -;source-doc/base-drv/transfers.c:105: if ((uint16_t)endpoint < LOWER_SAFE_RAM_ADDRESS) - ld a,(ix+10) - sub a,0x80 - jr NC,l_usb_dat_in_trnsfer_ext_00105 -;source-doc/base-drv/transfers.c:106: return USB_BAD_ADDRESS; - ld l,0x82 - jr l_usb_dat_in_trnsfer_ext_00106 -l_usb_dat_in_trnsfer_ext_00105: -;source-doc/base-drv/transfers.c:108: return usb_data_in_transfer(buffer, buffer_size, device_address, endpoint); - ld l,(ix+9) - ld h,(ix+10) - push hl - ld a,(ix+8) - push af - inc sp - ld l,(ix+6) - ld h,(ix+7) - push hl - ld l,(ix+4) - ld h,(ix+5) - push hl - call _usb_data_in_transfer - pop af - pop af - pop af - inc sp -l_usb_dat_in_trnsfer_ext_00106: -;source-doc/base-drv/transfers.c:109: } - pop ix - ret -;source-doc/base-drv/transfers.c:112: usb_dat_in_trns_n_ext(uint8_t *buffer, uint16_t *buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { -; --------------------------------- -; Function usb_dat_in_trns_n_ext -; --------------------------------- -_usb_dat_in_trns_n_ext: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/transfers.c:113: if (buffer != 0 && ((uint16_t)buffer & 0xC000) == 0) - ld a,(ix+5) - or a,(ix+4) - jr Z,l_usb_dat_in_trns_n_ext_00102 - ld a,(ix+5) - and a,0xc0 - jr NZ,l_usb_dat_in_trns_n_ext_00102 -;source-doc/base-drv/transfers.c:114: return USB_BAD_ADDRESS; - ld l,0x82 - jr l_usb_dat_in_trns_n_ext_00108 -l_usb_dat_in_trns_n_ext_00102: -;source-doc/base-drv/transfers.c:116: if (((uint16_t)endpoint & 0xC000) == 0) - ld a,(ix+10) - and a,0xc0 - jr NZ,l_usb_dat_in_trns_n_ext_00105 -;source-doc/base-drv/transfers.c:117: return USB_BAD_ADDRESS; - ld l,0x82 - jr l_usb_dat_in_trns_n_ext_00108 -l_usb_dat_in_trns_n_ext_00105: -;source-doc/base-drv/transfers.c:119: if (((uint16_t)buffer_size & 0xC000) == 0) - ld a,(ix+7) - and a,0xc0 - jr NZ,l_usb_dat_in_trns_n_ext_00107 -;source-doc/base-drv/transfers.c:120: return USB_BAD_ADDRESS; - ld l,0x82 - jr l_usb_dat_in_trns_n_ext_00108 -l_usb_dat_in_trns_n_ext_00107: -;source-doc/base-drv/transfers.c:122: return usb_data_in_transfer_n(buffer, buffer_size, device_address, endpoint); - ld c,(ix+6) - ld b,(ix+7) - ld l,(ix+9) - ld h,(ix+10) - push hl - ld a,(ix+8) - push af - inc sp - push bc - ld l,(ix+4) - ld h,(ix+5) - push hl - call _usb_data_in_transfer_n - pop af - pop af - pop af - inc sp -l_usb_dat_in_trns_n_ext_00108: -;source-doc/base-drv/transfers.c:123: } - pop ix - ret -;source-doc/base-drv/transfers.c:135: usb_data_in_transfer(uint8_t *buffer, const uint16_t buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { -; --------------------------------- -; Function usb_data_in_transfer -; --------------------------------- -_usb_data_in_transfer: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/transfers.c:136: critical_begin(); - call _critical_begin -;source-doc/base-drv/transfers.c:138: ch_set_usb_address(device_address); - ld l,(ix+8) - call _ch_set_usb_address -;source-doc/base-drv/transfers.c:140: result = ch_data_in_transfer(buffer, buffer_size, endpoint); - ld l,(ix+9) - ld h,(ix+10) - push hl - ld l,(ix+6) - ld h,(ix+7) - push hl - ld l,(ix+4) - ld h,(ix+5) - push hl - call _ch_data_in_transfer - pop af - pop af - pop af - ld a, l - ld (_result), a -;source-doc/base-drv/transfers.c:142: critical_end(); - call _critical_end -;source-doc/base-drv/transfers.c:144: return result; - ld hl,(_result) -;source-doc/base-drv/transfers.c:145: } - pop ix - ret -;source-doc/base-drv/transfers.c:157: usb_data_in_transfer_n(uint8_t *buffer, uint8_t *const buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { -; --------------------------------- -; Function usb_data_in_transfer_n -; --------------------------------- -_usb_data_in_transfer_n: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/transfers.c:158: critical_begin(); - call _critical_begin -;source-doc/base-drv/transfers.c:160: ch_set_usb_address(device_address); - ld l,(ix+8) - call _ch_set_usb_address -;source-doc/base-drv/transfers.c:162: result = ch_data_in_transfer_n(buffer, buffer_size, endpoint); - ld l,(ix+9) - ld h,(ix+10) - push hl - ld l,(ix+6) - ld h,(ix+7) - push hl - ld l,(ix+4) - ld h,(ix+5) - push hl - call _ch_data_in_transfer_n - pop af - pop af - pop af - ld a, l - ld (_result), a -;source-doc/base-drv/transfers.c:164: critical_end(); - call _critical_end -;source-doc/base-drv/transfers.c:166: return result; - ld hl,(_result) -;source-doc/base-drv/transfers.c:167: } - pop ix - ret -;source-doc/base-drv/transfers.c:179: usb_data_out_transfer(const uint8_t *buffer, uint16_t buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { -; --------------------------------- -; Function usb_data_out_transfer -; --------------------------------- -_usb_data_out_transfer: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/transfers.c:180: critical_begin(); - call _critical_begin -;source-doc/base-drv/transfers.c:182: ch_set_usb_address(device_address); - ld l,(ix+8) - call _ch_set_usb_address -;source-doc/base-drv/transfers.c:184: result = ch_data_out_transfer(buffer, buffer_size, endpoint); - ld l,(ix+9) - ld h,(ix+10) - push hl - ld l,(ix+6) - ld h,(ix+7) - push hl - ld l,(ix+4) - ld h,(ix+5) - push hl - call _ch_data_out_transfer - pop af - pop af - pop af - ld a, l - ld (_result), a -;source-doc/base-drv/transfers.c:186: critical_end(); - call _critical_end -;source-doc/base-drv/transfers.c:188: return result; - ld hl,(_result) -;source-doc/base-drv/transfers.c:189: } - pop ix - ret - SECTION IGNORE diff --git a/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.asm b/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.asm deleted file mode 100644 index 2668b656..00000000 --- a/Source/HBIOS/ch376-native/base-drv/usb-base-drv.c.asm +++ /dev/null @@ -1,441 +0,0 @@ -;-------------------------------------------------------- -; File Created by SDCC : free open source ISO C Compiler -; Version 4.4.0 #14648 (Linux) -;-------------------------------------------------------- -; Processed by Z88DK -;-------------------------------------------------------- - - EXTERN __divschar - EXTERN __divschar_callee - EXTERN __divsint - EXTERN __divsint_callee - EXTERN __divslong - EXTERN __divslong_callee - EXTERN __divslonglong - EXTERN __divslonglong_callee - EXTERN __divsuchar - EXTERN __divsuchar_callee - EXTERN __divuchar - EXTERN __divuchar_callee - EXTERN __divuint - EXTERN __divuint_callee - EXTERN __divulong - EXTERN __divulong_callee - EXTERN __divulonglong - EXTERN __divulonglong_callee - EXTERN __divuschar - EXTERN __divuschar_callee - EXTERN __modschar - EXTERN __modschar_callee - EXTERN __modsint - EXTERN __modsint_callee - EXTERN __modslong - EXTERN __modslong_callee - EXTERN __modslonglong - EXTERN __modslonglong_callee - EXTERN __modsuchar - EXTERN __modsuchar_callee - EXTERN __moduchar - EXTERN __moduchar_callee - EXTERN __moduint - EXTERN __moduint_callee - EXTERN __modulong - EXTERN __modulong_callee - EXTERN __modulonglong - EXTERN __modulonglong_callee - EXTERN __moduschar - EXTERN __moduschar_callee - EXTERN __mulint - EXTERN __mulint_callee - EXTERN __mullong - EXTERN __mullong_callee - EXTERN __mullonglong - EXTERN __mullonglong_callee - EXTERN __mulschar - EXTERN __mulschar_callee - EXTERN __mulsuchar - EXTERN __mulsuchar_callee - EXTERN __muluchar - EXTERN __muluchar_callee - EXTERN __muluschar - EXTERN __muluschar_callee - EXTERN __rlslonglong - EXTERN __rlslonglong_callee - EXTERN __rlulonglong - EXTERN __rlulonglong_callee - EXTERN __rrslonglong - EXTERN __rrslonglong_callee - EXTERN __rrulonglong - EXTERN __rrulonglong_callee - EXTERN ___mulsint2slong - EXTERN ___mulsint2slong_callee - EXTERN ___muluint2ulong - EXTERN ___muluint2ulong_callee - EXTERN ___sdcc_call_hl - EXTERN ___sdcc_call_iy - EXTERN ___sdcc_enter_ix - EXTERN banked_call - EXTERN _banked_ret - EXTERN ___fs2schar - EXTERN ___fs2schar_callee - EXTERN ___fs2sint - EXTERN ___fs2sint_callee - EXTERN ___fs2slong - EXTERN ___fs2slong_callee - EXTERN ___fs2slonglong - EXTERN ___fs2slonglong_callee - EXTERN ___fs2uchar - EXTERN ___fs2uchar_callee - EXTERN ___fs2uint - EXTERN ___fs2uint_callee - EXTERN ___fs2ulong - EXTERN ___fs2ulong_callee - EXTERN ___fs2ulonglong - EXTERN ___fs2ulonglong_callee - EXTERN ___fsadd - EXTERN ___fsadd_callee - EXTERN ___fsdiv - EXTERN ___fsdiv_callee - EXTERN ___fseq - EXTERN ___fseq_callee - EXTERN ___fsgt - EXTERN ___fsgt_callee - EXTERN ___fslt - EXTERN ___fslt_callee - EXTERN ___fsmul - EXTERN ___fsmul_callee - EXTERN ___fsneq - EXTERN ___fsneq_callee - EXTERN ___fssub - EXTERN ___fssub_callee - EXTERN ___schar2fs - EXTERN ___schar2fs_callee - EXTERN ___sint2fs - EXTERN ___sint2fs_callee - EXTERN ___slong2fs - EXTERN ___slong2fs_callee - EXTERN ___slonglong2fs - EXTERN ___slonglong2fs_callee - EXTERN ___uchar2fs - EXTERN ___uchar2fs_callee - EXTERN ___uint2fs - EXTERN ___uint2fs_callee - EXTERN ___ulong2fs - EXTERN ___ulong2fs_callee - EXTERN ___ulonglong2fs - EXTERN ___ulonglong2fs_callee - EXTERN ____sdcc_2_copy_src_mhl_dst_deix - EXTERN ____sdcc_2_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_deix - EXTERN ____sdcc_4_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_mbc - EXTERN ____sdcc_4_ldi_nosave_bc - EXTERN ____sdcc_4_ldi_save_bc - EXTERN ____sdcc_4_push_hlix - EXTERN ____sdcc_4_push_mhl - EXTERN ____sdcc_lib_setmem_hl - EXTERN ____sdcc_ll_add_de_bc_hl - EXTERN ____sdcc_ll_add_de_bc_hlix - EXTERN ____sdcc_ll_add_de_hlix_bc - EXTERN ____sdcc_ll_add_de_hlix_bcix - EXTERN ____sdcc_ll_add_deix_bc_hl - EXTERN ____sdcc_ll_add_deix_hlix - EXTERN ____sdcc_ll_add_hlix_bc_deix - EXTERN ____sdcc_ll_add_hlix_deix_bc - EXTERN ____sdcc_ll_add_hlix_deix_bcix - EXTERN ____sdcc_ll_asr_hlix_a - EXTERN ____sdcc_ll_asr_mbc_a - EXTERN ____sdcc_ll_copy_src_de_dst_hlix - EXTERN ____sdcc_ll_copy_src_de_dst_hlsp - EXTERN ____sdcc_ll_copy_src_deix_dst_hl - EXTERN ____sdcc_ll_copy_src_deix_dst_hlix - EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp - EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp - EXTERN ____sdcc_ll_copy_src_hl_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm - EXTERN ____sdcc_ll_lsl_hlix_a - EXTERN ____sdcc_ll_lsl_mbc_a - EXTERN ____sdcc_ll_lsr_hlix_a - EXTERN ____sdcc_ll_lsr_mbc_a - EXTERN ____sdcc_ll_push_hlix - EXTERN ____sdcc_ll_push_mhl - EXTERN ____sdcc_ll_sub_de_bc_hl - EXTERN ____sdcc_ll_sub_de_bc_hlix - EXTERN ____sdcc_ll_sub_de_hlix_bc - EXTERN ____sdcc_ll_sub_de_hlix_bcix - EXTERN ____sdcc_ll_sub_deix_bc_hl - EXTERN ____sdcc_ll_sub_deix_hlix - EXTERN ____sdcc_ll_sub_hlix_bc_deix - EXTERN ____sdcc_ll_sub_hlix_deix_bc - EXTERN ____sdcc_ll_sub_hlix_deix_bcix - EXTERN ____sdcc_load_debc_deix - EXTERN ____sdcc_load_dehl_deix - EXTERN ____sdcc_load_debc_mhl - EXTERN ____sdcc_load_hlde_mhl - EXTERN ____sdcc_store_dehl_bcix - EXTERN ____sdcc_store_debc_hlix - EXTERN ____sdcc_store_debc_mhl - EXTERN ____sdcc_cpu_pop_ei - EXTERN ____sdcc_cpu_pop_ei_jp - EXTERN ____sdcc_cpu_push_di - EXTERN ____sdcc_outi - EXTERN ____sdcc_outi_128 - EXTERN ____sdcc_outi_256 - EXTERN ____sdcc_ldi - EXTERN ____sdcc_ldi_128 - EXTERN ____sdcc_ldi_256 - EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_dehl_dst_bcix - EXTERN ____sdcc_4_and_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_cpl_src_mhl_dst_debc - EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc - -;-------------------------------------------------------- -; Public variables in this module -;-------------------------------------------------------- - GLOBAL _chnative_seek -;-------------------------------------------------------- -; Externals used -;-------------------------------------------------------- - GLOBAL _usbdev_dat_in_trnsfer_0 - GLOBAL _usbdev_dat_in_trnsfer - GLOBAL _usbdev_bulk_in_transfer - GLOBAL _usbdev_blk_out_trnsfer - GLOBAL _usbdev_control_transfer - GLOBAL _usb_data_out_transfer - GLOBAL _usb_data_in_transfer_n - GLOBAL _usb_data_in_transfer - GLOBAL _usb_control_transfer - GLOBAL _ch_issue_token_in_ep0 - GLOBAL _ch_issue_token_out_ep0 - GLOBAL _ch_issue_token_setup - GLOBAL _ch_data_out_transfer - GLOBAL _ch_data_in_transfer_n - GLOBAL _ch_data_in_transfer - GLOBAL _ch_control_transfer_set_config - GLOBAL _ch_control_transfer_set_address - GLOBAL _ch_control_transfer_request_descriptor - GLOBAL _ch_set_usb_address - GLOBAL _ch_write_data - GLOBAL _ch_cmd_get_ic_version - GLOBAL _ch_cmd_set_usb_mode - GLOBAL _ch_probe - GLOBAL _ch_cmd_reset_all - GLOBAL _ch_read_data - GLOBAL _ch_very_short_wait_int_and_get_status - GLOBAL _ch_short_wait_int_and_get_status - GLOBAL _ch_long_wait_int_and_get_status - GLOBAL _ch_get_status - GLOBAL _ch_command - GLOBAL _delay_medium - GLOBAL _delay_short - GLOBAL _delay_20ms - GLOBAL _printf - GLOBAL _delay - GLOBAL _ulltoa_callee - GLOBAL _ulltoa - GLOBAL _strtoull_callee - GLOBAL _strtoull - GLOBAL _strtoll_callee - GLOBAL _strtoll - GLOBAL _lltoa_callee - GLOBAL _lltoa - GLOBAL _llabs_callee - GLOBAL _llabs - GLOBAL __lldivu__callee - GLOBAL __lldivu_ - GLOBAL __lldiv__callee - GLOBAL __lldiv_ - GLOBAL _atoll_callee - GLOBAL _atoll - GLOBAL _realloc_unlocked_callee - GLOBAL _realloc_unlocked - GLOBAL _malloc_unlocked_fastcall - GLOBAL _malloc_unlocked - GLOBAL _free_unlocked_fastcall - GLOBAL _free_unlocked - GLOBAL _calloc_unlocked_callee - GLOBAL _calloc_unlocked - GLOBAL _aligned_alloc_unlocked_callee - GLOBAL _aligned_alloc_unlocked - GLOBAL _realloc_callee - GLOBAL _realloc - GLOBAL _malloc_fastcall - GLOBAL _malloc - GLOBAL _free_fastcall - GLOBAL _free - GLOBAL _calloc_callee - GLOBAL _calloc - GLOBAL _aligned_alloc_callee - GLOBAL _aligned_alloc - GLOBAL _utoa_callee - GLOBAL _utoa - GLOBAL _ultoa_callee - GLOBAL _ultoa - GLOBAL _system_fastcall - GLOBAL _system - GLOBAL _strtoul_callee - GLOBAL _strtoul - GLOBAL _strtol_callee - GLOBAL _strtol - GLOBAL _strtof_callee - GLOBAL _strtof - GLOBAL _strtod_callee - GLOBAL _strtod - GLOBAL _srand_fastcall - GLOBAL _srand - GLOBAL _rand - GLOBAL _quick_exit_fastcall - GLOBAL _quick_exit - GLOBAL _qsort_callee - GLOBAL _qsort - GLOBAL _ltoa_callee - GLOBAL _ltoa - GLOBAL _labs_fastcall - GLOBAL _labs - GLOBAL _itoa_callee - GLOBAL _itoa - GLOBAL _ftoh_callee - GLOBAL _ftoh - GLOBAL _ftog_callee - GLOBAL _ftog - GLOBAL _ftoe_callee - GLOBAL _ftoe - GLOBAL _ftoa_callee - GLOBAL _ftoa - GLOBAL _exit_fastcall - GLOBAL _exit - GLOBAL _dtoh_callee - GLOBAL _dtoh - GLOBAL _dtog_callee - GLOBAL _dtog - GLOBAL _dtoe_callee - GLOBAL _dtoe - GLOBAL _dtoa_callee - GLOBAL _dtoa - GLOBAL _bsearch_callee - GLOBAL _bsearch - GLOBAL _atol_fastcall - GLOBAL _atol - GLOBAL _atoi_fastcall - GLOBAL _atoi - GLOBAL _atof_fastcall - GLOBAL _atof - GLOBAL _atexit_fastcall - GLOBAL _atexit - GLOBAL _at_quick_exit_fastcall - GLOBAL _at_quick_exit - GLOBAL _abs_fastcall - GLOBAL _abs - GLOBAL _abort - GLOBAL __strtou__callee - GLOBAL __strtou_ - GLOBAL __strtoi__callee - GLOBAL __strtoi_ - GLOBAL __random_uniform_xor_8__fastcall - GLOBAL __random_uniform_xor_8_ - GLOBAL __random_uniform_xor_32__fastcall - GLOBAL __random_uniform_xor_32_ - GLOBAL __random_uniform_cmwc_8__fastcall - GLOBAL __random_uniform_cmwc_8_ - GLOBAL __shellsort__callee - GLOBAL __shellsort_ - GLOBAL __quicksort__callee - GLOBAL __quicksort_ - GLOBAL __insertion_sort__callee - GLOBAL __insertion_sort_ - GLOBAL __ldivu__callee - GLOBAL __ldivu_ - GLOBAL __ldiv__callee - GLOBAL __ldiv_ - GLOBAL __divu__callee - GLOBAL __divu_ - GLOBAL __div__callee - GLOBAL __div_ - GLOBAL _result -;-------------------------------------------------------- -; special function registers -;-------------------------------------------------------- -defc _CH376_DATA_PORT = 0xff88 -defc _CH376_COMMAND_PORT = 0xff89 -defc _USB_MODULE_LEDS = 0xff8a -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - SECTION bss_compiler -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - -IF 0 - -; .area _INITIALIZED removed by z88dk - - -ENDIF - -;-------------------------------------------------------- -; absolute external ram data -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; global & static initialisations -;-------------------------------------------------------- - SECTION code_crt_init -;-------------------------------------------------------- -; Home -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; code -;-------------------------------------------------------- - SECTION code_compiler -;source-doc/base-drv/usb-base-drv.c:6: uint8_t chnative_seek(const uint32_t lba, device_config_storage *const storage_device) __sdcccall(1) { -; --------------------------------- -; Function chnative_seek -; --------------------------------- -_chnative_seek: - push ix -;source-doc/base-drv/usb-base-drv.c:7: storage_device->current_lba = lba; - ld ix,0 - add ix,sp - ld c,(ix+4) - ld b,(ix+5) - push bc - ld a,(ix-2) - add a,0x0c - ld c,l - ld b,h - ld l, a - ld a,(ix-1) - adc a,0x00 - ld h, a - ld (hl), e - inc hl - ld (hl), d - inc hl - ld (hl), c - inc hl - ld (hl), b -;source-doc/base-drv/usb-base-drv.c:8: return 0; - xor a, a -;source-doc/base-drv/usb-base-drv.c:9: } - ld sp, ix - pop ix - pop hl - pop bc - jp (hl) - SECTION IGNORE diff --git a/Source/HBIOS/ch376-native/base-drv/usb_state.c.asm b/Source/HBIOS/ch376-native/base-drv/usb_state.c.asm deleted file mode 100644 index a6764589..00000000 --- a/Source/HBIOS/ch376-native/base-drv/usb_state.c.asm +++ /dev/null @@ -1,605 +0,0 @@ -;-------------------------------------------------------- -; File Created by SDCC : free open source ISO C Compiler -; Version 4.4.0 #14648 (Linux) -;-------------------------------------------------------- -; Processed by Z88DK -;-------------------------------------------------------- - - EXTERN __divschar - EXTERN __divschar_callee - EXTERN __divsint - EXTERN __divsint_callee - EXTERN __divslong - EXTERN __divslong_callee - EXTERN __divslonglong - EXTERN __divslonglong_callee - EXTERN __divsuchar - EXTERN __divsuchar_callee - EXTERN __divuchar - EXTERN __divuchar_callee - EXTERN __divuint - EXTERN __divuint_callee - EXTERN __divulong - EXTERN __divulong_callee - EXTERN __divulonglong - EXTERN __divulonglong_callee - EXTERN __divuschar - EXTERN __divuschar_callee - EXTERN __modschar - EXTERN __modschar_callee - EXTERN __modsint - EXTERN __modsint_callee - EXTERN __modslong - EXTERN __modslong_callee - EXTERN __modslonglong - EXTERN __modslonglong_callee - EXTERN __modsuchar - EXTERN __modsuchar_callee - EXTERN __moduchar - EXTERN __moduchar_callee - EXTERN __moduint - EXTERN __moduint_callee - EXTERN __modulong - EXTERN __modulong_callee - EXTERN __modulonglong - EXTERN __modulonglong_callee - EXTERN __moduschar - EXTERN __moduschar_callee - EXTERN __mulint - EXTERN __mulint_callee - EXTERN __mullong - EXTERN __mullong_callee - EXTERN __mullonglong - EXTERN __mullonglong_callee - EXTERN __mulschar - EXTERN __mulschar_callee - EXTERN __mulsuchar - EXTERN __mulsuchar_callee - EXTERN __muluchar - EXTERN __muluchar_callee - EXTERN __muluschar - EXTERN __muluschar_callee - EXTERN __rlslonglong - EXTERN __rlslonglong_callee - EXTERN __rlulonglong - EXTERN __rlulonglong_callee - EXTERN __rrslonglong - EXTERN __rrslonglong_callee - EXTERN __rrulonglong - EXTERN __rrulonglong_callee - EXTERN ___mulsint2slong - EXTERN ___mulsint2slong_callee - EXTERN ___muluint2ulong - EXTERN ___muluint2ulong_callee - EXTERN ___sdcc_call_hl - EXTERN ___sdcc_call_iy - EXTERN ___sdcc_enter_ix - EXTERN banked_call - EXTERN _banked_ret - EXTERN ___fs2schar - EXTERN ___fs2schar_callee - EXTERN ___fs2sint - EXTERN ___fs2sint_callee - EXTERN ___fs2slong - EXTERN ___fs2slong_callee - EXTERN ___fs2slonglong - EXTERN ___fs2slonglong_callee - EXTERN ___fs2uchar - EXTERN ___fs2uchar_callee - EXTERN ___fs2uint - EXTERN ___fs2uint_callee - EXTERN ___fs2ulong - EXTERN ___fs2ulong_callee - EXTERN ___fs2ulonglong - EXTERN ___fs2ulonglong_callee - EXTERN ___fsadd - EXTERN ___fsadd_callee - EXTERN ___fsdiv - EXTERN ___fsdiv_callee - EXTERN ___fseq - EXTERN ___fseq_callee - EXTERN ___fsgt - EXTERN ___fsgt_callee - EXTERN ___fslt - EXTERN ___fslt_callee - EXTERN ___fsmul - EXTERN ___fsmul_callee - EXTERN ___fsneq - EXTERN ___fsneq_callee - EXTERN ___fssub - EXTERN ___fssub_callee - EXTERN ___schar2fs - EXTERN ___schar2fs_callee - EXTERN ___sint2fs - EXTERN ___sint2fs_callee - EXTERN ___slong2fs - EXTERN ___slong2fs_callee - EXTERN ___slonglong2fs - EXTERN ___slonglong2fs_callee - EXTERN ___uchar2fs - EXTERN ___uchar2fs_callee - EXTERN ___uint2fs - EXTERN ___uint2fs_callee - EXTERN ___ulong2fs - EXTERN ___ulong2fs_callee - EXTERN ___ulonglong2fs - EXTERN ___ulonglong2fs_callee - EXTERN ____sdcc_2_copy_src_mhl_dst_deix - EXTERN ____sdcc_2_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_deix - EXTERN ____sdcc_4_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_mbc - EXTERN ____sdcc_4_ldi_nosave_bc - EXTERN ____sdcc_4_ldi_save_bc - EXTERN ____sdcc_4_push_hlix - EXTERN ____sdcc_4_push_mhl - EXTERN ____sdcc_lib_setmem_hl - EXTERN ____sdcc_ll_add_de_bc_hl - EXTERN ____sdcc_ll_add_de_bc_hlix - EXTERN ____sdcc_ll_add_de_hlix_bc - EXTERN ____sdcc_ll_add_de_hlix_bcix - EXTERN ____sdcc_ll_add_deix_bc_hl - EXTERN ____sdcc_ll_add_deix_hlix - EXTERN ____sdcc_ll_add_hlix_bc_deix - EXTERN ____sdcc_ll_add_hlix_deix_bc - EXTERN ____sdcc_ll_add_hlix_deix_bcix - EXTERN ____sdcc_ll_asr_hlix_a - EXTERN ____sdcc_ll_asr_mbc_a - EXTERN ____sdcc_ll_copy_src_de_dst_hlix - EXTERN ____sdcc_ll_copy_src_de_dst_hlsp - EXTERN ____sdcc_ll_copy_src_deix_dst_hl - EXTERN ____sdcc_ll_copy_src_deix_dst_hlix - EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp - EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp - EXTERN ____sdcc_ll_copy_src_hl_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm - EXTERN ____sdcc_ll_lsl_hlix_a - EXTERN ____sdcc_ll_lsl_mbc_a - EXTERN ____sdcc_ll_lsr_hlix_a - EXTERN ____sdcc_ll_lsr_mbc_a - EXTERN ____sdcc_ll_push_hlix - EXTERN ____sdcc_ll_push_mhl - EXTERN ____sdcc_ll_sub_de_bc_hl - EXTERN ____sdcc_ll_sub_de_bc_hlix - EXTERN ____sdcc_ll_sub_de_hlix_bc - EXTERN ____sdcc_ll_sub_de_hlix_bcix - EXTERN ____sdcc_ll_sub_deix_bc_hl - EXTERN ____sdcc_ll_sub_deix_hlix - EXTERN ____sdcc_ll_sub_hlix_bc_deix - EXTERN ____sdcc_ll_sub_hlix_deix_bc - EXTERN ____sdcc_ll_sub_hlix_deix_bcix - EXTERN ____sdcc_load_debc_deix - EXTERN ____sdcc_load_dehl_deix - EXTERN ____sdcc_load_debc_mhl - EXTERN ____sdcc_load_hlde_mhl - EXTERN ____sdcc_store_dehl_bcix - EXTERN ____sdcc_store_debc_hlix - EXTERN ____sdcc_store_debc_mhl - EXTERN ____sdcc_cpu_pop_ei - EXTERN ____sdcc_cpu_pop_ei_jp - EXTERN ____sdcc_cpu_push_di - EXTERN ____sdcc_outi - EXTERN ____sdcc_outi_128 - EXTERN ____sdcc_outi_256 - EXTERN ____sdcc_ldi - EXTERN ____sdcc_ldi_128 - EXTERN ____sdcc_ldi_256 - EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_dehl_dst_bcix - EXTERN ____sdcc_4_and_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_cpl_src_mhl_dst_debc - EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc - -;-------------------------------------------------------- -; Public variables in this module -;-------------------------------------------------------- - GLOBAL _device_config_sizes - GLOBAL _find_device_config - GLOBAL _find_first_free - GLOBAL _first_device_config - GLOBAL _next_device_config - GLOBAL _get_usb_device_config -;-------------------------------------------------------- -; Externals used -;-------------------------------------------------------- - GLOBAL _get_number_of_usb_drives - GLOBAL _usbtrn_clear_endpoint_halt - GLOBAL _usbtrn_set_address - GLOBAL _usbtrn_set_configuration - GLOBAL _usbtrn_gfull_cfg_desc - GLOBAL _usbtrn_get_config_descriptor - GLOBAL _usbtrn_get_descriptor2 - GLOBAL _usbtrn_get_descriptor - GLOBAL _usbdev_dat_in_trnsfer_0 - GLOBAL _usbdev_dat_in_trnsfer - GLOBAL _usbdev_bulk_in_transfer - GLOBAL _usbdev_blk_out_trnsfer - GLOBAL _usbdev_control_transfer - GLOBAL _usb_data_out_transfer - GLOBAL _usb_data_in_transfer_n - GLOBAL _usb_data_in_transfer - GLOBAL _usb_control_transfer - GLOBAL _ch_issue_token_in_ep0 - GLOBAL _ch_issue_token_out_ep0 - GLOBAL _ch_issue_token_setup - GLOBAL _ch_data_out_transfer - GLOBAL _ch_data_in_transfer_n - GLOBAL _ch_data_in_transfer - GLOBAL _ch_control_transfer_set_config - GLOBAL _ch_control_transfer_set_address - GLOBAL _ch_control_transfer_request_descriptor - GLOBAL _ch_set_usb_address - GLOBAL _ch_write_data - GLOBAL _ch_cmd_get_ic_version - GLOBAL _ch_cmd_set_usb_mode - GLOBAL _ch_probe - GLOBAL _ch_cmd_reset_all - GLOBAL _ch_read_data - GLOBAL _ch_very_short_wait_int_and_get_status - GLOBAL _ch_short_wait_int_and_get_status - GLOBAL _ch_long_wait_int_and_get_status - GLOBAL _ch_get_status - GLOBAL _ch_command - GLOBAL _delay_medium - GLOBAL _delay_short - GLOBAL _delay_20ms - GLOBAL _printf - GLOBAL _delay - GLOBAL _ulltoa_callee - GLOBAL _ulltoa - GLOBAL _strtoull_callee - GLOBAL _strtoull - GLOBAL _strtoll_callee - GLOBAL _strtoll - GLOBAL _lltoa_callee - GLOBAL _lltoa - GLOBAL _llabs_callee - GLOBAL _llabs - GLOBAL __lldivu__callee - GLOBAL __lldivu_ - GLOBAL __lldiv__callee - GLOBAL __lldiv_ - GLOBAL _atoll_callee - GLOBAL _atoll - GLOBAL _realloc_unlocked_callee - GLOBAL _realloc_unlocked - GLOBAL _malloc_unlocked_fastcall - GLOBAL _malloc_unlocked - GLOBAL _free_unlocked_fastcall - GLOBAL _free_unlocked - GLOBAL _calloc_unlocked_callee - GLOBAL _calloc_unlocked - GLOBAL _aligned_alloc_unlocked_callee - GLOBAL _aligned_alloc_unlocked - GLOBAL _realloc_callee - GLOBAL _realloc - GLOBAL _malloc_fastcall - GLOBAL _malloc - GLOBAL _free_fastcall - GLOBAL _free - GLOBAL _calloc_callee - GLOBAL _calloc - GLOBAL _aligned_alloc_callee - GLOBAL _aligned_alloc - GLOBAL _utoa_callee - GLOBAL _utoa - GLOBAL _ultoa_callee - GLOBAL _ultoa - GLOBAL _system_fastcall - GLOBAL _system - GLOBAL _strtoul_callee - GLOBAL _strtoul - GLOBAL _strtol_callee - GLOBAL _strtol - GLOBAL _strtof_callee - GLOBAL _strtof - GLOBAL _strtod_callee - GLOBAL _strtod - GLOBAL _srand_fastcall - GLOBAL _srand - GLOBAL _rand - GLOBAL _quick_exit_fastcall - GLOBAL _quick_exit - GLOBAL _qsort_callee - GLOBAL _qsort - GLOBAL _ltoa_callee - GLOBAL _ltoa - GLOBAL _labs_fastcall - GLOBAL _labs - GLOBAL _itoa_callee - GLOBAL _itoa - GLOBAL _ftoh_callee - GLOBAL _ftoh - GLOBAL _ftog_callee - GLOBAL _ftog - GLOBAL _ftoe_callee - GLOBAL _ftoe - GLOBAL _ftoa_callee - GLOBAL _ftoa - GLOBAL _exit_fastcall - GLOBAL _exit - GLOBAL _dtoh_callee - GLOBAL _dtoh - GLOBAL _dtog_callee - GLOBAL _dtog - GLOBAL _dtoe_callee - GLOBAL _dtoe - GLOBAL _dtoa_callee - GLOBAL _dtoa - GLOBAL _bsearch_callee - GLOBAL _bsearch - GLOBAL _atol_fastcall - GLOBAL _atol - GLOBAL _atoi_fastcall - GLOBAL _atoi - GLOBAL _atof_fastcall - GLOBAL _atof - GLOBAL _atexit_fastcall - GLOBAL _atexit - GLOBAL _at_quick_exit_fastcall - GLOBAL _at_quick_exit - GLOBAL _abs_fastcall - GLOBAL _abs - GLOBAL _abort - GLOBAL __strtou__callee - GLOBAL __strtou_ - GLOBAL __strtoi__callee - GLOBAL __strtoi_ - GLOBAL __random_uniform_xor_8__fastcall - GLOBAL __random_uniform_xor_8_ - GLOBAL __random_uniform_xor_32__fastcall - GLOBAL __random_uniform_xor_32_ - GLOBAL __random_uniform_cmwc_8__fastcall - GLOBAL __random_uniform_cmwc_8_ - GLOBAL __shellsort__callee - GLOBAL __shellsort_ - GLOBAL __quicksort__callee - GLOBAL __quicksort_ - GLOBAL __insertion_sort__callee - GLOBAL __insertion_sort_ - GLOBAL __ldivu__callee - GLOBAL __ldivu_ - GLOBAL __ldiv__callee - GLOBAL __ldiv_ - GLOBAL __divu__callee - GLOBAL __divu_ - GLOBAL __div__callee - GLOBAL __div_ - GLOBAL _x - GLOBAL _result -;-------------------------------------------------------- -; special function registers -;-------------------------------------------------------- -defc _CH376_DATA_PORT = 0xff88 -defc _CH376_COMMAND_PORT = 0xff89 -defc _USB_MODULE_LEDS = 0xff8a -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - SECTION bss_compiler -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - -IF 0 - -; .area _INITIALIZED removed by z88dk - - -ENDIF - -;-------------------------------------------------------- -; absolute external ram data -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; global & static initialisations -;-------------------------------------------------------- - SECTION code_crt_init -;-------------------------------------------------------- -; Home -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; code -;-------------------------------------------------------- - SECTION code_compiler -;source-doc/base-drv/usb_state.c:13: device_config *find_device_config(const usb_device_type requested_type) { -; --------------------------------- -; Function find_device_config -; --------------------------------- -_find_device_config: - push ix - ld ix,0 - add ix,sp -;source-doc/base-drv/usb_state.c:14: _usb_state *const p = get_usb_work_area(); -;source-doc/base-drv/usb_state.c:16: const device_config *p_config = first_device_config(p); - ld hl,_x - call _first_device_config -;source-doc/base-drv/usb_state.c:17: while (p_config) { -l_find_device_config_00103: - ld a, d - or a, e - jr Z,l_find_device_config_00105 -;source-doc/base-drv/usb_state.c:18: const uint8_t type = p_config->type; - ld l, e - ld h, d - ld a, (hl) - and a,0x0f - ld c, a -;source-doc/base-drv/usb_state.c:20: if (type == requested_type) - ld a,(ix+4) - sub a, c - jr NZ,l_find_device_config_00102 -;source-doc/base-drv/usb_state.c:21: return (device_config *)p_config; - ex de, hl - jr l_find_device_config_00106 -l_find_device_config_00102: -;source-doc/base-drv/usb_state.c:23: p_config = next_device_config(p, p_config); - ld hl,_x - call _next_device_config - jr l_find_device_config_00103 -l_find_device_config_00105: -;source-doc/base-drv/usb_state.c:26: return NULL; - ld hl,0x0000 -l_find_device_config_00106: -;source-doc/base-drv/usb_state.c:27: } - pop ix - ret - SECTION rodata_compiler -_device_config_sizes: - DEFB +0x00 - DEFB +0x10 - DEFB +0x10 - DEFB +0x0c - DEFB +0x06 - DEFB 0x00 - DEFB 0x00 - SECTION code_compiler -;source-doc/base-drv/usb_state.c:30: device_config *find_first_free(void) { -; --------------------------------- -; Function find_first_free -; --------------------------------- -_find_first_free: -;source-doc/base-drv/usb_state.c:31: _usb_state *const boot_state = get_usb_work_area(); -;source-doc/base-drv/usb_state.c:34: device_config *p = first_device_config(boot_state); - ld hl,_x - call _first_device_config -;source-doc/base-drv/usb_state.c:35: while (p) { -l_find_first_free_00103: - ld a, d - or a, e - jr Z,l_find_first_free_00105 -;source-doc/base-drv/usb_state.c:36: if (p->type == 0) - ld l, e - ld h, d - ld a, (hl) - and a,0x0f - jr NZ,l_find_first_free_00102 -;source-doc/base-drv/usb_state.c:37: return p; - ex de, hl - jr l_find_first_free_00106 -l_find_first_free_00102: -;source-doc/base-drv/usb_state.c:39: p = next_device_config(boot_state, p); - ld hl,_x - call _next_device_config - jr l_find_first_free_00103 -l_find_first_free_00105: -;source-doc/base-drv/usb_state.c:42: return NULL; - ld hl,0x0000 -l_find_first_free_00106: -;source-doc/base-drv/usb_state.c:43: } - ret -;source-doc/base-drv/usb_state.c:45: device_config *first_device_config(const _usb_state *const p) __sdcccall(1) { return (device_config *)&p->device_configs[0]; } -; --------------------------------- -; Function first_device_config -; --------------------------------- -_first_device_config: - ex de, hl - inc de - inc de - ret -;source-doc/base-drv/usb_state.c:47: device_config *next_device_config(const _usb_state *const usb_state, const device_config *const p) __sdcccall(1) { -; --------------------------------- -; Function next_device_config -; --------------------------------- -_next_device_config: - ld c, l - ld b, h -;source-doc/base-drv/usb_state.c:48: if (p->type == 0) - ld l, e - ld h, d - ld a, (hl) - and a,0x0f - jr NZ,l_next_device_config_00102 -;source-doc/base-drv/usb_state.c:49: return NULL; - ld de,0x0000 - jr l_next_device_config_00105 -l_next_device_config_00102: -;source-doc/base-drv/usb_state.c:51: const uint8_t size = device_config_sizes[p->type]; - ld l, e - ld h, d - ld a, (hl) - and a,0x0f - add a, +((_device_config_sizes) & 0xFF) - ld l, a - ld a,0x00 - adc a, +((_device_config_sizes) / 256) - ld h, a - ld l, (hl) -;source-doc/base-drv/usb_state.c:58: const uint8_t *_p = (uint8_t *)p; -;source-doc/base-drv/usb_state.c:59: device_config *const result = (device_config *)(_p + size); - ld h,0x00 - 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 - add hl, bc - ld a, e - sub a, l - ld a, d - sbc a, h - ret C -;source-doc/base-drv/usb_state.c:62: return NULL; - ld de,0x0000 -;source-doc/base-drv/usb_state.c:64: return result; -l_next_device_config_00105: -;source-doc/base-drv/usb_state.c:65: } - ret -;source-doc/base-drv/usb_state.c:68: device_config *get_usb_device_config(const uint8_t device_index) __sdcccall(1) { -; --------------------------------- -; Function get_usb_device_config -; --------------------------------- -_get_usb_device_config: - ld c, a -;source-doc/base-drv/usb_state.c:69: const _usb_state *const usb_state = get_usb_work_area(); -;source-doc/base-drv/usb_state.c:73: for (device_config *p = first_device_config(usb_state); p; p = next_device_config(usb_state, p)) { - push bc - ld hl,_x - call _first_device_config - pop bc - ld b,0x01 -l_get_usb_device_config_00107: - ld a, d - or a, e - jr Z,l_get_usb_device_config_00105 -;source-doc/base-drv/usb_state.c:74: if (p->type != USB_NOT_SUPPORTED) { - ld l, e - ld h, d - ld a, (hl) - and a,0x0f - jr Z,l_get_usb_device_config_00108 -;source-doc/base-drv/usb_state.c:75: if (counter == device_index) - ld a, c - sub a, b -;source-doc/base-drv/usb_state.c:76: return p; - jr Z,l_get_usb_device_config_00109 -;source-doc/base-drv/usb_state.c:77: counter++; - inc b -l_get_usb_device_config_00108: -;source-doc/base-drv/usb_state.c:73: for (device_config *p = first_device_config(usb_state); p; p = next_device_config(usb_state, p)) { - push bc - ld hl,_x - call _next_device_config - pop bc - jr l_get_usb_device_config_00107 -l_get_usb_device_config_00105: -;source-doc/base-drv/usb_state.c:81: return NULL; // is not a usb device - ld de,0x0000 -l_get_usb_device_config_00109: -;source-doc/base-drv/usb_state.c:82: } - ret - SECTION IGNORE diff --git a/Source/HBIOS/ch376-native/base-drv/work-area.c.asm b/Source/HBIOS/ch376-native/base-drv/work-area.c.asm deleted file mode 100644 index 0f2e36fc..00000000 --- a/Source/HBIOS/ch376-native/base-drv/work-area.c.asm +++ /dev/null @@ -1,520 +0,0 @@ -;-------------------------------------------------------- -; File Created by SDCC : free open source ISO C Compiler -; Version 4.4.0 #14648 (Linux) -;-------------------------------------------------------- -; Processed by Z88DK -;-------------------------------------------------------- - - EXTERN __divschar - EXTERN __divschar_callee - EXTERN __divsint - EXTERN __divsint_callee - EXTERN __divslong - EXTERN __divslong_callee - EXTERN __divslonglong - EXTERN __divslonglong_callee - EXTERN __divsuchar - EXTERN __divsuchar_callee - EXTERN __divuchar - EXTERN __divuchar_callee - EXTERN __divuint - EXTERN __divuint_callee - EXTERN __divulong - EXTERN __divulong_callee - EXTERN __divulonglong - EXTERN __divulonglong_callee - EXTERN __divuschar - EXTERN __divuschar_callee - EXTERN __modschar - EXTERN __modschar_callee - EXTERN __modsint - EXTERN __modsint_callee - EXTERN __modslong - EXTERN __modslong_callee - EXTERN __modslonglong - EXTERN __modslonglong_callee - EXTERN __modsuchar - EXTERN __modsuchar_callee - EXTERN __moduchar - EXTERN __moduchar_callee - EXTERN __moduint - EXTERN __moduint_callee - EXTERN __modulong - EXTERN __modulong_callee - EXTERN __modulonglong - EXTERN __modulonglong_callee - EXTERN __moduschar - EXTERN __moduschar_callee - EXTERN __mulint - EXTERN __mulint_callee - EXTERN __mullong - EXTERN __mullong_callee - EXTERN __mullonglong - EXTERN __mullonglong_callee - EXTERN __mulschar - EXTERN __mulschar_callee - EXTERN __mulsuchar - EXTERN __mulsuchar_callee - EXTERN __muluchar - EXTERN __muluchar_callee - EXTERN __muluschar - EXTERN __muluschar_callee - EXTERN __rlslonglong - EXTERN __rlslonglong_callee - EXTERN __rlulonglong - EXTERN __rlulonglong_callee - EXTERN __rrslonglong - EXTERN __rrslonglong_callee - EXTERN __rrulonglong - EXTERN __rrulonglong_callee - EXTERN ___mulsint2slong - EXTERN ___mulsint2slong_callee - EXTERN ___muluint2ulong - EXTERN ___muluint2ulong_callee - EXTERN ___sdcc_call_hl - EXTERN ___sdcc_call_iy - EXTERN ___sdcc_enter_ix - EXTERN banked_call - EXTERN _banked_ret - EXTERN ___fs2schar - EXTERN ___fs2schar_callee - EXTERN ___fs2sint - EXTERN ___fs2sint_callee - EXTERN ___fs2slong - EXTERN ___fs2slong_callee - EXTERN ___fs2slonglong - EXTERN ___fs2slonglong_callee - EXTERN ___fs2uchar - EXTERN ___fs2uchar_callee - EXTERN ___fs2uint - EXTERN ___fs2uint_callee - EXTERN ___fs2ulong - EXTERN ___fs2ulong_callee - EXTERN ___fs2ulonglong - EXTERN ___fs2ulonglong_callee - EXTERN ___fsadd - EXTERN ___fsadd_callee - EXTERN ___fsdiv - EXTERN ___fsdiv_callee - EXTERN ___fseq - EXTERN ___fseq_callee - EXTERN ___fsgt - EXTERN ___fsgt_callee - EXTERN ___fslt - EXTERN ___fslt_callee - EXTERN ___fsmul - EXTERN ___fsmul_callee - EXTERN ___fsneq - EXTERN ___fsneq_callee - EXTERN ___fssub - EXTERN ___fssub_callee - EXTERN ___schar2fs - EXTERN ___schar2fs_callee - EXTERN ___sint2fs - EXTERN ___sint2fs_callee - EXTERN ___slong2fs - EXTERN ___slong2fs_callee - EXTERN ___slonglong2fs - EXTERN ___slonglong2fs_callee - EXTERN ___uchar2fs - EXTERN ___uchar2fs_callee - EXTERN ___uint2fs - EXTERN ___uint2fs_callee - EXTERN ___ulong2fs - EXTERN ___ulong2fs_callee - EXTERN ___ulonglong2fs - EXTERN ___ulonglong2fs_callee - EXTERN ____sdcc_2_copy_src_mhl_dst_deix - EXTERN ____sdcc_2_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_deix - EXTERN ____sdcc_4_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_mbc - EXTERN ____sdcc_4_ldi_nosave_bc - EXTERN ____sdcc_4_ldi_save_bc - EXTERN ____sdcc_4_push_hlix - EXTERN ____sdcc_4_push_mhl - EXTERN ____sdcc_lib_setmem_hl - EXTERN ____sdcc_ll_add_de_bc_hl - EXTERN ____sdcc_ll_add_de_bc_hlix - EXTERN ____sdcc_ll_add_de_hlix_bc - EXTERN ____sdcc_ll_add_de_hlix_bcix - EXTERN ____sdcc_ll_add_deix_bc_hl - EXTERN ____sdcc_ll_add_deix_hlix - EXTERN ____sdcc_ll_add_hlix_bc_deix - EXTERN ____sdcc_ll_add_hlix_deix_bc - EXTERN ____sdcc_ll_add_hlix_deix_bcix - EXTERN ____sdcc_ll_asr_hlix_a - EXTERN ____sdcc_ll_asr_mbc_a - EXTERN ____sdcc_ll_copy_src_de_dst_hlix - EXTERN ____sdcc_ll_copy_src_de_dst_hlsp - EXTERN ____sdcc_ll_copy_src_deix_dst_hl - EXTERN ____sdcc_ll_copy_src_deix_dst_hlix - EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp - EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp - EXTERN ____sdcc_ll_copy_src_hl_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm - EXTERN ____sdcc_ll_lsl_hlix_a - EXTERN ____sdcc_ll_lsl_mbc_a - EXTERN ____sdcc_ll_lsr_hlix_a - EXTERN ____sdcc_ll_lsr_mbc_a - EXTERN ____sdcc_ll_push_hlix - EXTERN ____sdcc_ll_push_mhl - EXTERN ____sdcc_ll_sub_de_bc_hl - EXTERN ____sdcc_ll_sub_de_bc_hlix - EXTERN ____sdcc_ll_sub_de_hlix_bc - EXTERN ____sdcc_ll_sub_de_hlix_bcix - EXTERN ____sdcc_ll_sub_deix_bc_hl - EXTERN ____sdcc_ll_sub_deix_hlix - EXTERN ____sdcc_ll_sub_hlix_bc_deix - EXTERN ____sdcc_ll_sub_hlix_deix_bc - EXTERN ____sdcc_ll_sub_hlix_deix_bcix - EXTERN ____sdcc_load_debc_deix - EXTERN ____sdcc_load_dehl_deix - EXTERN ____sdcc_load_debc_mhl - EXTERN ____sdcc_load_hlde_mhl - EXTERN ____sdcc_store_dehl_bcix - EXTERN ____sdcc_store_debc_hlix - EXTERN ____sdcc_store_debc_mhl - EXTERN ____sdcc_cpu_pop_ei - EXTERN ____sdcc_cpu_pop_ei_jp - EXTERN ____sdcc_cpu_push_di - EXTERN ____sdcc_outi - EXTERN ____sdcc_outi_128 - EXTERN ____sdcc_outi_256 - EXTERN ____sdcc_ldi - EXTERN ____sdcc_ldi_128 - EXTERN ____sdcc_ldi_256 - EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_dehl_dst_bcix - EXTERN ____sdcc_4_and_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_cpl_src_mhl_dst_debc - EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc - -;-------------------------------------------------------- -; Public variables in this module -;-------------------------------------------------------- - GLOBAL _x -;-------------------------------------------------------- -; Externals used -;-------------------------------------------------------- - GLOBAL _get_usb_device_config - GLOBAL _find_device_config - GLOBAL _next_device_config - GLOBAL _first_device_config - GLOBAL _find_first_free - GLOBAL _usbtrn_clear_endpoint_halt - GLOBAL _usbtrn_set_address - GLOBAL _usbtrn_set_configuration - GLOBAL _usbtrn_gfull_cfg_desc - GLOBAL _usbtrn_get_config_descriptor - GLOBAL _usbtrn_get_descriptor2 - GLOBAL _usbtrn_get_descriptor - GLOBAL _usbdev_dat_in_trnsfer_0 - GLOBAL _usbdev_dat_in_trnsfer - GLOBAL _usbdev_bulk_in_transfer - GLOBAL _usbdev_blk_out_trnsfer - GLOBAL _usbdev_control_transfer - GLOBAL _usb_data_out_transfer - GLOBAL _usb_data_in_transfer_n - GLOBAL _usb_data_in_transfer - GLOBAL _usb_control_transfer - GLOBAL _ch_issue_token_in_ep0 - GLOBAL _ch_issue_token_out_ep0 - GLOBAL _ch_issue_token_setup - GLOBAL _ch_data_out_transfer - GLOBAL _ch_data_in_transfer_n - GLOBAL _ch_data_in_transfer - GLOBAL _ch_control_transfer_set_config - GLOBAL _ch_control_transfer_set_address - GLOBAL _ch_control_transfer_request_descriptor - GLOBAL _ch_set_usb_address - GLOBAL _ch_write_data - GLOBAL _ch_cmd_get_ic_version - GLOBAL _ch_cmd_set_usb_mode - GLOBAL _ch_probe - GLOBAL _ch_cmd_reset_all - GLOBAL _ch_read_data - GLOBAL _ch_very_short_wait_int_and_get_status - GLOBAL _ch_short_wait_int_and_get_status - GLOBAL _ch_long_wait_int_and_get_status - GLOBAL _ch_get_status - GLOBAL _ch_command - GLOBAL _delay_medium - GLOBAL _delay_short - GLOBAL _delay_20ms - GLOBAL _printf - GLOBAL _delay - GLOBAL _ulltoa_callee - GLOBAL _ulltoa - GLOBAL _strtoull_callee - GLOBAL _strtoull - GLOBAL _strtoll_callee - GLOBAL _strtoll - GLOBAL _lltoa_callee - GLOBAL _lltoa - GLOBAL _llabs_callee - GLOBAL _llabs - GLOBAL __lldivu__callee - GLOBAL __lldivu_ - GLOBAL __lldiv__callee - GLOBAL __lldiv_ - GLOBAL _atoll_callee - GLOBAL _atoll - GLOBAL _realloc_unlocked_callee - GLOBAL _realloc_unlocked - GLOBAL _malloc_unlocked_fastcall - GLOBAL _malloc_unlocked - GLOBAL _free_unlocked_fastcall - GLOBAL _free_unlocked - GLOBAL _calloc_unlocked_callee - GLOBAL _calloc_unlocked - GLOBAL _aligned_alloc_unlocked_callee - GLOBAL _aligned_alloc_unlocked - GLOBAL _realloc_callee - GLOBAL _realloc - GLOBAL _malloc_fastcall - GLOBAL _malloc - GLOBAL _free_fastcall - GLOBAL _free - GLOBAL _calloc_callee - GLOBAL _calloc - GLOBAL _aligned_alloc_callee - GLOBAL _aligned_alloc - GLOBAL _utoa_callee - GLOBAL _utoa - GLOBAL _ultoa_callee - GLOBAL _ultoa - GLOBAL _system_fastcall - GLOBAL _system - GLOBAL _strtoul_callee - GLOBAL _strtoul - GLOBAL _strtol_callee - GLOBAL _strtol - GLOBAL _strtof_callee - GLOBAL _strtof - GLOBAL _strtod_callee - GLOBAL _strtod - GLOBAL _srand_fastcall - GLOBAL _srand - GLOBAL _rand - GLOBAL _quick_exit_fastcall - GLOBAL _quick_exit - GLOBAL _qsort_callee - GLOBAL _qsort - GLOBAL _ltoa_callee - GLOBAL _ltoa - GLOBAL _labs_fastcall - GLOBAL _labs - GLOBAL _itoa_callee - GLOBAL _itoa - GLOBAL _ftoh_callee - GLOBAL _ftoh - GLOBAL _ftog_callee - GLOBAL _ftog - GLOBAL _ftoe_callee - GLOBAL _ftoe - GLOBAL _ftoa_callee - GLOBAL _ftoa - GLOBAL _exit_fastcall - GLOBAL _exit - GLOBAL _dtoh_callee - GLOBAL _dtoh - GLOBAL _dtog_callee - GLOBAL _dtog - GLOBAL _dtoe_callee - GLOBAL _dtoe - GLOBAL _dtoa_callee - GLOBAL _dtoa - GLOBAL _bsearch_callee - GLOBAL _bsearch - GLOBAL _atol_fastcall - GLOBAL _atol - GLOBAL _atoi_fastcall - GLOBAL _atoi - GLOBAL _atof_fastcall - GLOBAL _atof - GLOBAL _atexit_fastcall - GLOBAL _atexit - GLOBAL _at_quick_exit_fastcall - GLOBAL _at_quick_exit - GLOBAL _abs_fastcall - GLOBAL _abs - GLOBAL _abort - GLOBAL __strtou__callee - GLOBAL __strtou_ - GLOBAL __strtoi__callee - GLOBAL __strtoi_ - GLOBAL __random_uniform_xor_8__fastcall - GLOBAL __random_uniform_xor_8_ - GLOBAL __random_uniform_xor_32__fastcall - GLOBAL __random_uniform_xor_32_ - GLOBAL __random_uniform_cmwc_8__fastcall - GLOBAL __random_uniform_cmwc_8_ - GLOBAL __shellsort__callee - GLOBAL __shellsort_ - GLOBAL __quicksort__callee - GLOBAL __quicksort_ - GLOBAL __insertion_sort__callee - GLOBAL __insertion_sort_ - GLOBAL __ldivu__callee - GLOBAL __ldivu_ - GLOBAL __ldiv__callee - GLOBAL __ldiv_ - GLOBAL __divu__callee - GLOBAL __divu_ - GLOBAL __div__callee - GLOBAL __div_ - GLOBAL _result -;-------------------------------------------------------- -; special function registers -;-------------------------------------------------------- -defc _CH376_DATA_PORT = 0xff88 -defc _CH376_COMMAND_PORT = 0xff89 -defc _USB_MODULE_LEDS = 0xff8a -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - SECTION bss_compiler -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - -IF 0 - -; .area _INITIALIZED removed by z88dk - -_x: - DEFS 99 - -ENDIF - -;-------------------------------------------------------- -; absolute external ram data -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; global & static initialisations -;-------------------------------------------------------- - SECTION code_crt_init -;-------------------------------------------------------- -; Home -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; code -;-------------------------------------------------------- - SECTION data_compiler -_x: - DEFB 0x00 - DEFB +0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB 0x00 - DEFB +0x00 - SECTION IGNORE diff --git a/Source/HBIOS/ch376-native/cruntime.asm b/Source/HBIOS/ch376-native/cruntime.asm index 9eb4231d..74426810 100644 --- a/Source/HBIOS/ch376-native/cruntime.asm +++ b/Source/HBIOS/ch376-native/cruntime.asm @@ -62,3 +62,72 @@ zero_n: push de pop hl ret + +.if 0 +; required if --optimise-for-size is targetted +; but there appears to be a regression that stop the driver from working +; if optimised for size is selected +___sdcc_enter_ix: + ex (sp), ix + push ix + ld ix, 2 + add ix, sp + ret + +____sdcc_lib_setmem_hl: +l_setmem_hl: + ret + +____sdcc_load_debc_mhl: + ld c, (hl) + inc hl + ld b, (hl) + inc hl + ld e, (hl) + inc hl + ld d, (hl) + ret + +____sdcc_4_push_hlix: + pop af + push af + push af + push af + + push de + + push ix + pop de + + add hl, de + + ex de, hl + + ld hl, 2+2 + add hl, sp + + ex de, hl + + ldi + ldi + ldi + ld a, (hl) + ld (de), a + + inc bc + inc bc + inc bc + + pop de + ret + +____sdcc_store_debc_mhl: + ld (hl), c + inc hl + ld (hl), b + inc hl + ld (hl), e + inc hl + ld (hl), d + ret +.endif diff --git a/Source/HBIOS/ch376-native/keyboard/.gitignore b/Source/HBIOS/ch376-native/keyboard/.gitignore new file mode 100644 index 00000000..f4cb8488 --- /dev/null +++ b/Source/HBIOS/ch376-native/keyboard/.gitignore @@ -0,0 +1 @@ +*.asm diff --git a/Source/HBIOS/ch376-native/scsi-drv/.gitignore b/Source/HBIOS/ch376-native/scsi-drv/.gitignore new file mode 100644 index 00000000..f4cb8488 --- /dev/null +++ b/Source/HBIOS/ch376-native/scsi-drv/.gitignore @@ -0,0 +1 @@ +*.asm diff --git a/Source/HBIOS/ch376-native/ufi-drv/.gitignore b/Source/HBIOS/ch376-native/ufi-drv/.gitignore new file mode 100644 index 00000000..f4cb8488 --- /dev/null +++ b/Source/HBIOS/ch376-native/ufi-drv/.gitignore @@ -0,0 +1 @@ +*.asm diff --git a/Source/HBIOS/ch376-native/ufi-drv/usb_cbi.c.asm b/Source/HBIOS/ch376-native/ufi-drv/usb_cbi.c.asm deleted file mode 100644 index f0aa966b..00000000 --- a/Source/HBIOS/ch376-native/ufi-drv/usb_cbi.c.asm +++ /dev/null @@ -1,599 +0,0 @@ -;-------------------------------------------------------- -; File Created by SDCC : free open source ISO C Compiler -; Version 4.4.0 #14648 (Linux) -;-------------------------------------------------------- -; Processed by Z88DK -;-------------------------------------------------------- - - EXTERN __divschar - EXTERN __divschar_callee - EXTERN __divsint - EXTERN __divsint_callee - EXTERN __divslong - EXTERN __divslong_callee - EXTERN __divslonglong - EXTERN __divslonglong_callee - EXTERN __divsuchar - EXTERN __divsuchar_callee - EXTERN __divuchar - EXTERN __divuchar_callee - EXTERN __divuint - EXTERN __divuint_callee - EXTERN __divulong - EXTERN __divulong_callee - EXTERN __divulonglong - EXTERN __divulonglong_callee - EXTERN __divuschar - EXTERN __divuschar_callee - EXTERN __modschar - EXTERN __modschar_callee - EXTERN __modsint - EXTERN __modsint_callee - EXTERN __modslong - EXTERN __modslong_callee - EXTERN __modslonglong - EXTERN __modslonglong_callee - EXTERN __modsuchar - EXTERN __modsuchar_callee - EXTERN __moduchar - EXTERN __moduchar_callee - EXTERN __moduint - EXTERN __moduint_callee - EXTERN __modulong - EXTERN __modulong_callee - EXTERN __modulonglong - EXTERN __modulonglong_callee - EXTERN __moduschar - EXTERN __moduschar_callee - EXTERN __mulint - EXTERN __mulint_callee - EXTERN __mullong - EXTERN __mullong_callee - EXTERN __mullonglong - EXTERN __mullonglong_callee - EXTERN __mulschar - EXTERN __mulschar_callee - EXTERN __mulsuchar - EXTERN __mulsuchar_callee - EXTERN __muluchar - EXTERN __muluchar_callee - EXTERN __muluschar - EXTERN __muluschar_callee - EXTERN __rlslonglong - EXTERN __rlslonglong_callee - EXTERN __rlulonglong - EXTERN __rlulonglong_callee - EXTERN __rrslonglong - EXTERN __rrslonglong_callee - EXTERN __rrulonglong - EXTERN __rrulonglong_callee - EXTERN ___mulsint2slong - EXTERN ___mulsint2slong_callee - EXTERN ___muluint2ulong - EXTERN ___muluint2ulong_callee - EXTERN ___sdcc_call_hl - EXTERN ___sdcc_call_iy - EXTERN ___sdcc_enter_ix - EXTERN banked_call - EXTERN _banked_ret - EXTERN ___fs2schar - EXTERN ___fs2schar_callee - EXTERN ___fs2sint - EXTERN ___fs2sint_callee - EXTERN ___fs2slong - EXTERN ___fs2slong_callee - EXTERN ___fs2slonglong - EXTERN ___fs2slonglong_callee - EXTERN ___fs2uchar - EXTERN ___fs2uchar_callee - EXTERN ___fs2uint - EXTERN ___fs2uint_callee - EXTERN ___fs2ulong - EXTERN ___fs2ulong_callee - EXTERN ___fs2ulonglong - EXTERN ___fs2ulonglong_callee - EXTERN ___fsadd - EXTERN ___fsadd_callee - EXTERN ___fsdiv - EXTERN ___fsdiv_callee - EXTERN ___fseq - EXTERN ___fseq_callee - EXTERN ___fsgt - EXTERN ___fsgt_callee - EXTERN ___fslt - EXTERN ___fslt_callee - EXTERN ___fsmul - EXTERN ___fsmul_callee - EXTERN ___fsneq - EXTERN ___fsneq_callee - EXTERN ___fssub - EXTERN ___fssub_callee - EXTERN ___schar2fs - EXTERN ___schar2fs_callee - EXTERN ___sint2fs - EXTERN ___sint2fs_callee - EXTERN ___slong2fs - EXTERN ___slong2fs_callee - EXTERN ___slonglong2fs - EXTERN ___slonglong2fs_callee - EXTERN ___uchar2fs - EXTERN ___uchar2fs_callee - EXTERN ___uint2fs - EXTERN ___uint2fs_callee - EXTERN ___ulong2fs - EXTERN ___ulong2fs_callee - EXTERN ___ulonglong2fs - EXTERN ___ulonglong2fs_callee - EXTERN ____sdcc_2_copy_src_mhl_dst_deix - EXTERN ____sdcc_2_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_deix - EXTERN ____sdcc_4_copy_src_mhl_dst_bcix - EXTERN ____sdcc_4_copy_src_mhl_dst_mbc - EXTERN ____sdcc_4_ldi_nosave_bc - EXTERN ____sdcc_4_ldi_save_bc - EXTERN ____sdcc_4_push_hlix - EXTERN ____sdcc_4_push_mhl - EXTERN ____sdcc_lib_setmem_hl - EXTERN ____sdcc_ll_add_de_bc_hl - EXTERN ____sdcc_ll_add_de_bc_hlix - EXTERN ____sdcc_ll_add_de_hlix_bc - EXTERN ____sdcc_ll_add_de_hlix_bcix - EXTERN ____sdcc_ll_add_deix_bc_hl - EXTERN ____sdcc_ll_add_deix_hlix - EXTERN ____sdcc_ll_add_hlix_bc_deix - EXTERN ____sdcc_ll_add_hlix_deix_bc - EXTERN ____sdcc_ll_add_hlix_deix_bcix - EXTERN ____sdcc_ll_asr_hlix_a - EXTERN ____sdcc_ll_asr_mbc_a - EXTERN ____sdcc_ll_copy_src_de_dst_hlix - EXTERN ____sdcc_ll_copy_src_de_dst_hlsp - EXTERN ____sdcc_ll_copy_src_deix_dst_hl - EXTERN ____sdcc_ll_copy_src_deix_dst_hlix - EXTERN ____sdcc_ll_copy_src_deixm_dst_hlsp - EXTERN ____sdcc_ll_copy_src_desp_dst_hlsp - EXTERN ____sdcc_ll_copy_src_hl_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_de - EXTERN ____sdcc_ll_copy_src_hlsp_dst_deixm - EXTERN ____sdcc_ll_lsl_hlix_a - EXTERN ____sdcc_ll_lsl_mbc_a - EXTERN ____sdcc_ll_lsr_hlix_a - EXTERN ____sdcc_ll_lsr_mbc_a - EXTERN ____sdcc_ll_push_hlix - EXTERN ____sdcc_ll_push_mhl - EXTERN ____sdcc_ll_sub_de_bc_hl - EXTERN ____sdcc_ll_sub_de_bc_hlix - EXTERN ____sdcc_ll_sub_de_hlix_bc - EXTERN ____sdcc_ll_sub_de_hlix_bcix - EXTERN ____sdcc_ll_sub_deix_bc_hl - EXTERN ____sdcc_ll_sub_deix_hlix - EXTERN ____sdcc_ll_sub_hlix_bc_deix - EXTERN ____sdcc_ll_sub_hlix_deix_bc - EXTERN ____sdcc_ll_sub_hlix_deix_bcix - EXTERN ____sdcc_load_debc_deix - EXTERN ____sdcc_load_dehl_deix - EXTERN ____sdcc_load_debc_mhl - EXTERN ____sdcc_load_hlde_mhl - EXTERN ____sdcc_store_dehl_bcix - EXTERN ____sdcc_store_debc_hlix - EXTERN ____sdcc_store_debc_mhl - EXTERN ____sdcc_cpu_pop_ei - EXTERN ____sdcc_cpu_pop_ei_jp - EXTERN ____sdcc_cpu_push_di - EXTERN ____sdcc_outi - EXTERN ____sdcc_outi_128 - EXTERN ____sdcc_outi_256 - EXTERN ____sdcc_ldi - EXTERN ____sdcc_ldi_128 - EXTERN ____sdcc_ldi_256 - EXTERN ____sdcc_4_copy_srcd_hlix_dst_deix - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_deix - EXTERN ____sdcc_4_or_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_dehl_dst_bcix - EXTERN ____sdcc_4_and_src_dehl_dst_bcix - EXTERN ____sdcc_4_xor_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_mbc_mhl_dst_debc - EXTERN ____sdcc_4_cpl_src_mhl_dst_debc - EXTERN ____sdcc_4_xor_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_or_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_mhl_dst_debc - EXTERN ____sdcc_4_and_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_or_src_debc_hlix_dst_debc - EXTERN ____sdcc_4_xor_src_debc_hlix_dst_debc - -;-------------------------------------------------------- -; Public variables in this module -;-------------------------------------------------------- - GLOBAL _cbi2_adsc - GLOBAL _usb_execute_cbi -;-------------------------------------------------------- -; Externals used -;-------------------------------------------------------- - GLOBAL _critical_end - GLOBAL _critical_begin - GLOBAL _usbtrn_clear_endpoint_halt - GLOBAL _usbtrn_set_address - GLOBAL _usbtrn_set_configuration - GLOBAL _usbtrn_gfull_cfg_desc - GLOBAL _usbtrn_get_config_descriptor - GLOBAL _usbtrn_get_descriptor2 - GLOBAL _usbtrn_get_descriptor - GLOBAL _usbdev_dat_in_trnsfer_0 - GLOBAL _usbdev_dat_in_trnsfer - GLOBAL _usbdev_bulk_in_transfer - GLOBAL _usbdev_blk_out_trnsfer - GLOBAL _usbdev_control_transfer - GLOBAL _usb_data_out_transfer - GLOBAL _usb_data_in_transfer_n - GLOBAL _usb_data_in_transfer - GLOBAL _usb_control_transfer - GLOBAL _ch_issue_token_in_ep0 - GLOBAL _ch_issue_token_out_ep0 - GLOBAL _ch_issue_token_setup - GLOBAL _ch_data_out_transfer - GLOBAL _ch_data_in_transfer_n - GLOBAL _ch_data_in_transfer - GLOBAL _ch_control_transfer_set_config - GLOBAL _ch_control_transfer_set_address - GLOBAL _ch_control_transfer_request_descriptor - GLOBAL _ch_set_usb_address - GLOBAL _ch_write_data - GLOBAL _ch_cmd_get_ic_version - GLOBAL _ch_cmd_set_usb_mode - GLOBAL _ch_probe - GLOBAL _ch_cmd_reset_all - GLOBAL _ch_read_data - GLOBAL _ch_very_short_wait_int_and_get_status - GLOBAL _ch_short_wait_int_and_get_status - GLOBAL _ch_long_wait_int_and_get_status - GLOBAL _ch_get_status - GLOBAL _ch_command - GLOBAL _delay_medium - GLOBAL _delay_short - GLOBAL _delay_20ms - GLOBAL _printf - GLOBAL _delay - GLOBAL _ulltoa_callee - GLOBAL _ulltoa - GLOBAL _strtoull_callee - GLOBAL _strtoull - GLOBAL _strtoll_callee - GLOBAL _strtoll - GLOBAL _lltoa_callee - GLOBAL _lltoa - GLOBAL _llabs_callee - GLOBAL _llabs - GLOBAL __lldivu__callee - GLOBAL __lldivu_ - GLOBAL __lldiv__callee - GLOBAL __lldiv_ - GLOBAL _atoll_callee - GLOBAL _atoll - GLOBAL _realloc_unlocked_callee - GLOBAL _realloc_unlocked - GLOBAL _malloc_unlocked_fastcall - GLOBAL _malloc_unlocked - GLOBAL _free_unlocked_fastcall - GLOBAL _free_unlocked - GLOBAL _calloc_unlocked_callee - GLOBAL _calloc_unlocked - GLOBAL _aligned_alloc_unlocked_callee - GLOBAL _aligned_alloc_unlocked - GLOBAL _realloc_callee - GLOBAL _realloc - GLOBAL _malloc_fastcall - GLOBAL _malloc - GLOBAL _free_fastcall - GLOBAL _free - GLOBAL _calloc_callee - GLOBAL _calloc - GLOBAL _aligned_alloc_callee - GLOBAL _aligned_alloc - GLOBAL _utoa_callee - GLOBAL _utoa - GLOBAL _ultoa_callee - GLOBAL _ultoa - GLOBAL _system_fastcall - GLOBAL _system - GLOBAL _strtoul_callee - GLOBAL _strtoul - GLOBAL _strtol_callee - GLOBAL _strtol - GLOBAL _strtof_callee - GLOBAL _strtof - GLOBAL _strtod_callee - GLOBAL _strtod - GLOBAL _srand_fastcall - GLOBAL _srand - GLOBAL _rand - GLOBAL _quick_exit_fastcall - GLOBAL _quick_exit - GLOBAL _qsort_callee - GLOBAL _qsort - GLOBAL _ltoa_callee - GLOBAL _ltoa - GLOBAL _labs_fastcall - GLOBAL _labs - GLOBAL _itoa_callee - GLOBAL _itoa - GLOBAL _ftoh_callee - GLOBAL _ftoh - GLOBAL _ftog_callee - GLOBAL _ftog - GLOBAL _ftoe_callee - GLOBAL _ftoe - GLOBAL _ftoa_callee - GLOBAL _ftoa - GLOBAL _exit_fastcall - GLOBAL _exit - GLOBAL _dtoh_callee - GLOBAL _dtoh - GLOBAL _dtog_callee - GLOBAL _dtog - GLOBAL _dtoe_callee - GLOBAL _dtoe - GLOBAL _dtoa_callee - GLOBAL _dtoa - GLOBAL _bsearch_callee - GLOBAL _bsearch - GLOBAL _atol_fastcall - GLOBAL _atol - GLOBAL _atoi_fastcall - GLOBAL _atoi - GLOBAL _atof_fastcall - GLOBAL _atof - GLOBAL _atexit_fastcall - GLOBAL _atexit - GLOBAL _at_quick_exit_fastcall - GLOBAL _at_quick_exit - GLOBAL _abs_fastcall - GLOBAL _abs - GLOBAL _abort - GLOBAL __strtou__callee - GLOBAL __strtou_ - GLOBAL __strtoi__callee - GLOBAL __strtoi_ - GLOBAL __random_uniform_xor_8__fastcall - GLOBAL __random_uniform_xor_8_ - GLOBAL __random_uniform_xor_32__fastcall - GLOBAL __random_uniform_xor_32_ - GLOBAL __random_uniform_cmwc_8__fastcall - GLOBAL __random_uniform_cmwc_8_ - GLOBAL __shellsort__callee - GLOBAL __shellsort_ - GLOBAL __quicksort__callee - GLOBAL __quicksort_ - GLOBAL __insertion_sort__callee - GLOBAL __insertion_sort_ - GLOBAL __ldivu__callee - GLOBAL __ldivu_ - GLOBAL __ldiv__callee - GLOBAL __ldiv_ - GLOBAL __divu__callee - GLOBAL __divu_ - GLOBAL __div__callee - GLOBAL __div_ - GLOBAL _in_critical_usb_section - GLOBAL _result -;-------------------------------------------------------- -; special function registers -;-------------------------------------------------------- -defc _CH376_DATA_PORT = 0xff88 -defc _CH376_COMMAND_PORT = 0xff89 -defc _USB_MODULE_LEDS = 0xff8a -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - SECTION bss_compiler -;-------------------------------------------------------- -; ram data -;-------------------------------------------------------- - -IF 0 - -; .area _INITIALIZED removed by z88dk - -_cbi2_adsc: - DEFS 8 - -ENDIF - -;-------------------------------------------------------- -; absolute external ram data -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; global & static initialisations -;-------------------------------------------------------- - SECTION code_crt_init -;-------------------------------------------------------- -; Home -;-------------------------------------------------------- - SECTION IGNORE -;-------------------------------------------------------- -; code -;-------------------------------------------------------- - SECTION code_compiler -;source-doc/ufi-drv/usb_cbi.c:10: usb_error usb_execute_cbi(device_config *const storage_device, -; --------------------------------- -; Function usb_execute_cbi -; --------------------------------- -_usb_execute_cbi: - push ix - ld ix,0 - add ix,sp - ld hl, -8 - add hl, sp - ld sp, hl -;source-doc/ufi-drv/usb_cbi.c:17: const uint8_t interface_number = storage_device->interface_number; - ld l,(ix+4) - ld h,(ix+5) - ld c,l - ld b,h - inc hl - inc hl - ld e, (hl) -;source-doc/ufi-drv/usb_cbi.c:20: adsc = cbi2_adsc; - push de - push bc - ex de, hl - ld hl,4 - add hl, sp - ex de, hl - ld bc,0x0008 - ld hl,_cbi2_adsc - ldir - pop bc - pop de -;source-doc/ufi-drv/usb_cbi.c:21: adsc.bIndex[0] = interface_number; - ld (ix-4),e -;source-doc/ufi-drv/usb_cbi.c:23: critical_begin(); - push bc - call _critical_begin - pop bc -;source-doc/ufi-drv/usb_cbi.c:25: result = usbdev_control_transfer(storage_device, &adsc, (uint8_t *const)cmd); - ld l,(ix+6) - ld h,(ix+7) - push hl - ld hl,2 - add hl, sp - push hl - push bc - call _usbdev_control_transfer - pop af - pop af - pop af - ld a, l - ld (_result), a -;source-doc/ufi-drv/usb_cbi.c:27: if (result == USB_ERR_STALL) { - ld a,(_result) - sub a,0x02 - jr NZ,l_usb_execute_cbi_00104 -;source-doc/ufi-drv/usb_cbi.c:28: if (sense_codes != NULL) - ld a,(ix+14) - or a,(ix+13) - jr Z,l_usb_execute_cbi_00102 -;source-doc/ufi-drv/usb_cbi.c:29: usbdev_dat_in_trnsfer(storage_device, sense_codes, 2, ENDPOINT_INTERRUPT_IN); - ld a,0x02 - push af - inc sp - ld hl,0x0002 - push hl - ld l,(ix+13) - ld h,(ix+14) - push hl - ld l,(ix+4) - ld h,(ix+5) - push hl - call _usbdev_dat_in_trnsfer - ld hl,7 - add hl, sp - ld sp, hl -l_usb_execute_cbi_00102: -;source-doc/ufi-drv/usb_cbi.c:31: result = USB_ERR_STALL; - ld hl,_result - ld (hl),0x02 -;source-doc/ufi-drv/usb_cbi.c:32: goto done; - jp l_usb_execute_cbi_00116 -l_usb_execute_cbi_00104: -;source-doc/ufi-drv/usb_cbi.c:35: if (result != USB_ERR_OK) { - ld a,(_result) - or a, a - jp NZ, l_usb_execute_cbi_00116 -;source-doc/ufi-drv/usb_cbi.c:40: if (send) { - bit 0,(ix+8) - jr Z,l_usb_execute_cbi_00112 -;source-doc/ufi-drv/usb_cbi.c:41: result = usbdev_blk_out_trnsfer(storage_device, buffer, buffer_size); - ld l,(ix+9) - ld h,(ix+10) - push hl - ld l,(ix+11) - ld h,(ix+12) - push hl - ld l,(ix+4) - ld h,(ix+5) - push hl - call _usbdev_blk_out_trnsfer - pop af - pop af - pop af - ld a, l - ld (_result), a -;source-doc/ufi-drv/usb_cbi.c:43: if (result != USB_ERR_OK) { - ld a,(_result) - or a, a - jr Z,l_usb_execute_cbi_00113 -;source-doc/ufi-drv/usb_cbi.c:45: goto done; - jr l_usb_execute_cbi_00116 -l_usb_execute_cbi_00112: -;source-doc/ufi-drv/usb_cbi.c:48: result = usbdev_dat_in_trnsfer(storage_device, buffer, buffer_size, ENDPOINT_BULK_IN); - ld a,0x01 - push af - inc sp - ld l,(ix+9) - ld h,(ix+10) - push hl - ld l,(ix+11) - ld h,(ix+12) - push hl - ld l,(ix+4) - ld h,(ix+5) - push hl - call _usbdev_dat_in_trnsfer - pop af - pop af - pop af - inc sp - ld a, l - ld (_result), a -;source-doc/ufi-drv/usb_cbi.c:50: if (result != USB_ERR_OK) { - ld a,(_result) - or a, a - jr NZ,l_usb_execute_cbi_00116 -;source-doc/ufi-drv/usb_cbi.c:52: goto done; -l_usb_execute_cbi_00113: -;source-doc/ufi-drv/usb_cbi.c:56: if (sense_codes != NULL) { - ld a,(ix+14) - or a,(ix+13) - jr Z,l_usb_execute_cbi_00116 -;source-doc/ufi-drv/usb_cbi.c:57: result = usbdev_dat_in_trnsfer(storage_device, sense_codes, 2, ENDPOINT_INTERRUPT_IN); - ld a,0x02 - push af - inc sp - ld hl,0x0002 - push hl - ld l,(ix+13) - ld h,(ix+14) - push hl - ld l,(ix+4) - ld h,(ix+5) - push hl - call _usbdev_dat_in_trnsfer - pop af - pop af - pop af - inc sp - ld a, l - ld (_result), a -;source-doc/ufi-drv/usb_cbi.c:65: done: -l_usb_execute_cbi_00116: -;source-doc/ufi-drv/usb_cbi.c:66: critical_end(); - call _critical_end -;source-doc/ufi-drv/usb_cbi.c:68: return result; - ld hl,(_result) -;source-doc/ufi-drv/usb_cbi.c:69: } - ld sp, ix - pop ix - ret - SECTION data_compiler -_cbi2_adsc: - DEFB +0x21 - DEFB +0x00 - DEFB +0x00 - DEFB +0x00 - DEFB +0xff - DEFB +0x00 - DEFW +0x000c - SECTION IGNORE