mirror of https://github.com/wwarthen/RomWBW.git
43 changed files with 8536 additions and 1965 deletions
@ -1,6 +0,0 @@ |
|||
# Build with: docker build --progress plain -t romwbw-z88dk . |
|||
# run with : docker run -v ${PWD}:/src/ --privileged=true -u $(id -u ${USER}):$(id -g ${USER}) -it romwbw-z88dk:latest |
|||
|
|||
FROM z88dk/z88dk |
|||
|
|||
RUN apk add build-base |
|||
@ -1,14 +1,14 @@ |
|||
; Generated File -- not to be modify directly |
|||
#include "ch376-native/base-drv/dev_transfers.c.s" |
|||
#include "ch376-native/base-drv/ch376.c.s" |
|||
#include "ch376-native/base-drv/class_hub.c.s" |
|||
#include "ch376-native/base-drv/critical-section.c.s" |
|||
#include "ch376-native/base-drv/dev_transfers.c.s" |
|||
#include "ch376-native/base-drv/enumerate.c.s" |
|||
#include "ch376-native/base-drv/usb_state.c.s" |
|||
#include "ch376-native/base-drv/class_hub.c.s" |
|||
#include "ch376-native/base-drv/enumerate_storage.c.s" |
|||
#include "ch376-native/base-drv/enumerate_hub.c.s" |
|||
#include "ch376-native/base-drv/usb-base-drv.c.s" |
|||
#include "ch376-native/base-drv/transfers.c.s" |
|||
#include "ch376-native/base-drv/ch376.c.s" |
|||
#include "ch376-native/base-drv/enumerate_storage.c.s" |
|||
#include "ch376-native/base-drv/protocol.c.s" |
|||
#include "ch376-native/base-drv/work-area.c.s" |
|||
#include "ch376-native/base-drv/transfers.c.s" |
|||
#include "ch376-native/base-drv/usb-base-drv.c.s" |
|||
#include "ch376-native/base-drv/usb-init.c.s" |
|||
#include "ch376-native/base-drv/usb_state.c.s" |
|||
#include "ch376-native/base-drv/work-area.c.s" |
|||
|
|||
File diff suppressed because it is too large
@ -0,0 +1,458 @@ |
|||
;-------------------------------------------------------- |
|||
; 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 |
|||
@ -0,0 +1,834 @@ |
|||
;-------------------------------------------------------- |
|||
; 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 |
|||
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -0,0 +1,829 @@ |
|||
;-------------------------------------------------------- |
|||
; 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 |
|||
@ -0,0 +1,441 @@ |
|||
;-------------------------------------------------------- |
|||
; 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 |
|||
@ -0,0 +1,605 @@ |
|||
;-------------------------------------------------------- |
|||
; 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 |
|||
@ -0,0 +1,520 @@ |
|||
;-------------------------------------------------------- |
|||
; 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 |
|||
@ -1,4 +1,4 @@ |
|||
; Generated File -- not to be modify directly |
|||
#include "ch376-native/keyboard/kyb-init.c.s" |
|||
#include "ch376-native/keyboard/class_hid.c.s" |
|||
#include "ch376-native/keyboard/class_hid_keyboard.c.s" |
|||
#include "ch376-native/keyboard/kyb-init.c.s" |
|||
|
|||
@ -0,0 +1,60 @@ |
|||
# Native CH376 Driver |
|||
|
|||
The native CH376 HBIOS driver is written in c, using z88dk's zcc compiler. |
|||
|
|||
The build process, is a 3 stage process. |
|||
|
|||
1. Compile all the C code to assembly files (.asm) |
|||
2. Translate the produced .asm files syntax to compile with the RomWBW assembler (.s) |
|||
3. Assemble the driver .s files as per the standard HBIOS build process |
|||
|
|||
The original C code and produced/translated .s files are all committed units in the repo. But it is |
|||
expected, that only the c files are to be modified/updated. |
|||
|
|||
The .s files are checked in, to builders to not require the C compiler tool chain (z88dk) to be installed. |
|||
|
|||
The c compiling/translating process is also only support on linux, as the script to translate the .asm files |
|||
to .s files is a linux bash script. (Although the script can be easily run within Windows's Sub-system for linux) |
|||
|
|||
## Compiling the C code |
|||
|
|||
To compile the c code, to update the .s files: |
|||
|
|||
Within the `Source/HBIOS/ch376-native` directly: |
|||
|
|||
``` |
|||
make |
|||
``` |
|||
|
|||
The make script will search for z88dk's `zcc` compiler, if not found, will attempt to use a docker wrapper. |
|||
It will not work if z88dk or docker is not installed. |
|||
|
|||
## USB Native Driver systems |
|||
|
|||
The usb driver is divided into a few sub-system, which can be individually enabled within the standard HBIOS config files. |
|||
|
|||
### base-drv |
|||
|
|||
The `base-drv` system contains the core code to discover, enumerate, and communicate to USB devices. |
|||
|
|||
It also includes the driver code for enumerate and operating USB devices on USB hubs. |
|||
|
|||
### scsi-drv |
|||
|
|||
The `scsi-drv` system can be enabled with the HBIOS config `CHSCSIENABLE` |
|||
|
|||
When activated, access to most USB mass storage devices (thumb drives, magnetic usb drives) is enabled. |
|||
|
|||
### ufi-drv |
|||
|
|||
The `ufi-drv` system can be enabled with the HBIOS config `CHUFIENABLE` |
|||
|
|||
When activated, access to 3.5" Floppy USB devices will be enabled. |
|||
|
|||
### keyboard |
|||
|
|||
The `keyboard` system can be enabled with the HBIOS config `USBKYBENABLE` |
|||
|
|||
When activated, usb keyboards can be used as input devices. |
|||
|
|||
|
|||
@ -1,3 +1,3 @@ |
|||
; Generated File -- not to be modify directly |
|||
#include "ch376-native/scsi-drv/scsi-init.c.s" |
|||
#include "ch376-native/scsi-drv/class_scsi.c.s" |
|||
#include "ch376-native/scsi-drv/scsi-init.c.s" |
|||
|
|||
@ -1,30 +0,0 @@ |
|||
|
|||
./base-drv/dev_transfers.c: base-drv/dev_transfers.c ././source-doc/base-drv/dev_transfers.h ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/transfers.h ././source-doc/base-drv/protocol.h |
|||
./base-drv/critical-section.c: base-drv/critical-section.c ././source-doc/base-drv/critical-section.h |
|||
./base-drv/enumerate.c: base-drv/enumerate.c ././source-doc/base-drv/enumerate.h ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/protocol.h ././source-doc/base-drv/dev_transfers.h ././source-doc/base-drv/transfers.h ././source-doc/base-drv/usb_state.h ././source-doc/base-drv/enumerate_hub.h ././source-doc/base-drv/enumerate_storage.h ././source-doc/base-drv/work-area.h ././source-doc/base-drv/print.h |
|||
./base-drv/usb_state.c: base-drv/usb_state.c ././source-doc/base-drv/usb_state.h ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/protocol.h ././source-doc/base-drv/dev_transfers.h ././source-doc/base-drv/transfers.h ././source-doc/base-drv/work-area.h |
|||
./base-drv/class_hub.c: base-drv/class_hub.c ././source-doc/base-drv/class_hub.h ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/protocol.h ././source-doc/base-drv/dev_transfers.h ././source-doc/base-drv/transfers.h ././source-doc/base-drv/usb_state.h |
|||
./base-drv/enumerate_storage.c: base-drv/enumerate_storage.c ././source-doc/base-drv/enumerate_storage.h ././source-doc/base-drv/protocol.h ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/dev_transfers.h ././source-doc/base-drv/transfers.h |
|||
./base-drv/enumerate_hub.c: base-drv/enumerate_hub.c ././source-doc/base-drv/enumerate_hub.h ././source-doc/base-drv/enumerate.h ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/protocol.h ././source-doc/base-drv/dev_transfers.h ././source-doc/base-drv/transfers.h ././source-doc/base-drv/usb_state.h ././source-doc/base-drv/class_hub.h ././source-doc/base-drv/work-area.h |
|||
./base-drv/usb-base-drv.c: base-drv/usb-base-drv.c ././source-doc/base-drv/usb-base-drv.h ././source-doc/base-drv//ch376inc.h ././source-doc/base-drv//delay.h
|
|||
./base-drv/transfers.c: base-drv/transfers.c ././source-doc/base-drv/transfers.h ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/z80.h ././source-doc/base-drv/ez80-helpers.h ././source-doc/base-drv/print.h |
|||
./base-drv/ch376.c: base-drv/ch376.c ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/ez80-helpers.h ././source-doc/base-drv/print.h |
|||
./base-drv/protocol.c: base-drv/protocol.c ././source-doc/base-drv/protocol.h ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/dev_transfers.h ././source-doc/base-drv/transfers.h ././source-doc/base-drv/ez80-helpers.h ././source-doc/base-drv/print.h |
|||
./base-drv/work-area.c: base-drv/work-area.c ././source-doc/base-drv/usb_state.h ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/protocol.h ././source-doc/base-drv/dev_transfers.h ././source-doc/base-drv/transfers.h |
|||
./base-drv/usb-init.c: base-drv/usb-init.c ././source-doc/base-drv/ch376.h ././source-doc/base-drv/ch376inc.h ././source-doc/base-drv/delay.h ././source-doc/base-drv/enumerate.h ././source-doc/base-drv/protocol.h ././source-doc/base-drv/dev_transfers.h ././source-doc/base-drv/transfers.h ././source-doc/base-drv/usb_state.h ././source-doc/base-drv/print.h ././source-doc/base-drv/work-area.h ././source-doc/base-drv/z80.h |
|||
./ufi-drv/ufi-init.c: ufi-drv/ufi-init.c ././source-doc/ufi-drv/class_ufi.h ././source-doc/base-drv//transfers.h ././source-doc/ufi-drv/usb_cbi.h
|
|||
./ufi-drv/usb_cbi.c: ufi-drv/usb_cbi.c ././source-doc/ufi-drv/usb_cbi.h |
|||
./ufi-drv/class_ufi.c: ufi-drv/class_ufi.c ././source-doc/ufi-drv/class_ufi.h ././source-doc/base-drv//transfers.h ././source-doc/ufi-drv/usb_cbi.h
|
|||
./keyboard/kyb-init.c: keyboard/kyb-init.c ././source-doc/keyboard/class_hid.h ././source-doc/base-drv//transfers.h ././source-doc/keyboard/class_hid_keyboard.h
|
|||
./keyboard/class_hid.c: keyboard/class_hid.c ././source-doc/keyboard/class_hid.h ././source-doc/base-drv//transfers.h
|
|||
./keyboard/class_hid_keyboard.c: keyboard/class_hid_keyboard.c ././source-doc/keyboard/class_hid_keyboard.h |
|||
./scsi-drv/scsi-init.c: scsi-drv/scsi-init.c ././source-doc/scsi-drv/class_scsi.h ././source-doc/base-drv//ch376inc.h ././source-doc/base-drv//delay.h ././source-doc/base-drv//transfers.h
|
|||
./scsi-drv/class_scsi.c: scsi-drv/class_scsi.c ././source-doc/scsi-drv/class_scsi.h ././source-doc/base-drv//ch376inc.h ././source-doc/base-drv//delay.h ././source-doc/base-drv//transfers.h
|
|||
## |
|||
./base-drv.s: base-drv/./dev_transfers.c.s base-drv/./critical-section.c.s base-drv/./enumerate.c.s base-drv/./usb_state.c.s base-drv/./class_hub.c.s base-drv/./enumerate_storage.c.s base-drv/./enumerate_hub.c.s base-drv/./usb-base-drv.c.s base-drv/./transfers.c.s base-drv/./ch376.c.s base-drv/./protocol.c.s base-drv/./work-area.c.s base-drv/./usb-init.c.s |
|||
## |
|||
./scsi-drv.s: scsi-drv/./scsi-init.c.s scsi-drv/./class_scsi.c.s |
|||
## |
|||
./ufi-drv.s: ufi-drv/./ufi-init.c.s ufi-drv/./usb_cbi.c.s ufi-drv/./class_ufi.c.s |
|||
## |
|||
./keyboard.s: keyboard/./kyb-init.c.s keyboard/./class_hid.c.s keyboard/./class_hid_keyboard.c.s |
|||
@ -0,0 +1,599 @@ |
|||
;-------------------------------------------------------- |
|||
; 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 |
|||
Loading…
Reference in new issue