1 .export _ch376_set_file_name
2 .export _ch376_file_open
3 .export _ch376_ic_get_version
5 .export _ch376_check_exist
6 .export _ch376_disk_mount
7 .export _ch376_set_usb_mode
9 .importzp sp,tmp2,tmp3,tmp1
10 .include "telemon30.inc"
12 ; CODE FOR CH376_SET_USB_MODE *************************************************
14 CH376_SET_USB_MODE_CODE_USB_HOST_SOF_PACKAGE_AUTOMATICALLY := $06
16 CH376_USB_INT_DISK_READ := $1d
17 CH376_USB_INT_SUCCESS := $14
18 CH376_ERR_MISS_FILE := $42
23 CH376_GET_IC_VER := $01
24 CH376_SET_BAUDRATE := $02
25 CH376_GET_ENTER_SLEEP := $03
26 CH376_RESET_ALL := $05
27 CH376_CHECK_EXIST := $06
28 CH376_GET_FILE_SIZE := $0C
29 CH376_SET_USB_MODE := $15
30 CH376_GET_STATUS := $22
31 CH376_RD_USB_DATA0 := $27
32 CH376_SET_FILE_NAME := $2f
33 CH376_DISK_CONNECT := $30 ; check the disk connection status
34 CH376_DISK_MOUNT := $31
35 CH376_FILE_OPEN := $32
36 CH376_FILE_ENUM_GO := $33
37 CH376_FILE_CLOSE := $36
38 CH376_BYTE_READ := $3A
39 CH376_BYTE_RD_GO := $3b
40 CH376_BYTE_WRITE := $3C
41 CH376_DISK_CAPACITY := $3E
42 CH376_DISK_RD_GO := $55
46 ; void ch376_set_file_name(char *filename)
47 .proc _ch376_set_file_name
50 lda #CH376_SET_FILE_NAME ;$2f
54 lda (tmp1),y ; replace by bufnom
55 beq end ; we reached 0 value
58 cpy #13 ; because we don't manage longfilename shortname =11
65 ; void _ch376_file_open();
67 .proc _ch376_file_open
68 lda #CH376_FILE_OPEN ; $32
70 jsr _ch376_wait_response
76 .proc _ch376_get_file_size
77 lda #CH376_GET_FILE_SIZE
96 lda #CH376_RESET_ALL ; 5
110 ; char ch376_check_exist(char value);
112 .proc _ch376_check_exist
114 lda #CH376_CHECK_EXIST ;
122 ; char ch376_ic_get_version(void)
123 .proc _ch376_ic_get_version
124 lda #CH376_GET_IC_VER
131 ; void ch376_set_usb_mode(char mode)
133 .proc _ch376_set_usb_mode
134 ; CH376_SET_USB_MODE_CODE_USB_HOST_SOF_PACKAGE_AUTOMATICALLY
136 lda #CH376_SET_USB_MODE ; $15
144 ; void ch376_set_bytes_write(int value);
145 .proc _ch376_set_bytes_write
148 ldx #CH376_BYTE_WRITE
154 jsr _ch376_wait_response
158 .proc _ch376_set_bytes_read
163 jsr _ch376_wait_response
167 ; char ch376_disk_mount();
168 .proc _ch376_disk_mount
169 lda #CH376_DISK_MOUNT ; $31
171 jsr _ch376_wait_response
172 ; if we read data value, we have then length of the volume name
178 ; char ch376_wait_response();
179 .proc _ch376_wait_response
180 ; 1 return 1 if usb controller does not respond
181 ; else A contains answer of the controller
184 ldx #$ff ; merci de laisser une valeur importante car parfois en mode non debug, le controleur ne répond pas tout de suite
197 lda #CH376_GET_STATUS