2 ; For XA65 compatibily in the futur
3 .FEATURE c_comments,labels_without_colons,pc_assignment, loose_char_term
4 .export _ch376_set_file_name
5 .export _ch376_file_open
6 .export _ch376_ic_get_version
8 .export _ch376_check_exist
9 .export _ch376_disk_mount
10 .export _ch376_set_usb_mode
11 .export _ch376_file_create
12 .export _ch376_fcreate
15 .export _ch376_fcreate
18 .importzp sp,tmp2,tmp3,tmp1
19 .include "telemon30.inc"
23 ; CODE FOR CH376_SET_USB_MODE *************************************************
25 CH376_SET_USB_MODE_CODE_USB_HOST_SOF_PACKAGE_AUTOMATICALLY := $06
27 CH376_USB_INT_DISK_READ := $1d
28 CH376_USB_INT_SUCCESS := $14
29 CH376_ERR_MISS_FILE := $42
33 CH376_GET_IC_VER := $01
34 CH376_SET_BAUDRATE := $02
35 CH376_GET_ENTER_SLEEP := $03
36 CH376_RESET_ALL := $05
37 CH376_CHECK_EXIST := $06
38 CH376_GET_FILE_SIZE := $0C
39 CH376_SET_USB_MODE := $15
40 CH376_GET_STATUS := $22
41 CH376_RD_USB_DATA0 := $27
42 CH376_SET_FILE_NAME := $2f
43 CH376_DISK_CONNECT := $30 ; check the disk connection status
44 CH376_DISK_MOUNT := $31
45 CH376_FILE_OPEN := $32
46 CH376_FILE_ENUM_GO := $33
47 CH376_FILE_CREATE := $34
48 CH376_FILE_CLOSE := $36
49 CH376_BYTE_READ := $3A
50 CH376_BYTE_RD_GO := $3b
51 CH376_BYTE_WRITE := $3C
52 CH376_DISK_CAPACITY := $3E
53 CH376_DISK_RD_GO := $55
55 .proc _ch376_file_create
56 lda #CH376_FILE_CREATE
58 jsr _ch376_wait_response
62 ; void _ch376_fcreate(char *filename)
64 jsr _ch376_set_file_name
66 jsr _ch376_file_create
69 ; void ch376_set_file_name(char *filename)
70 .proc _ch376_set_file_name
73 lda #CH376_SET_FILE_NAME ;$2f
77 lda (tmp1),y ; replace by bufnom
78 beq end ; we reached 0 value
81 cpy #13 ; because we don't manage longfilename shortname =11
88 ; void _ch376_file_open();
90 .proc _ch376_file_open
91 lda #CH376_FILE_OPEN ; $32
93 jsr _ch376_wait_response
99 .proc _ch376_get_file_size
100 lda #CH376_GET_FILE_SIZE
116 ; void ch376_reset();
119 lda #CH376_RESET_ALL ; 5
133 ; char ch376_check_exist(char value);
135 .proc _ch376_check_exist
137 lda #CH376_CHECK_EXIST ;
145 ; char ch376_ic_get_version(void)
146 .proc _ch376_ic_get_version
147 lda #CH376_GET_IC_VER
154 ; void ch376_set_usb_mode(char mode)
156 .proc _ch376_set_usb_mode
157 ; CH376_SET_USB_MODE_CODE_USB_HOST_SOF_PACKAGE_AUTOMATICALLY
159 lda #CH376_SET_USB_MODE ; $15
167 ; void ch376_set_bytes_write(int value);
168 .proc _ch376_set_bytes_write
171 ldx #CH376_BYTE_WRITE
177 jsr _ch376_wait_response
181 .proc _ch376_set_bytes_read
186 jsr _ch376_wait_response
190 ; char ch376_disk_mount();
191 .proc _ch376_disk_mount
192 lda #CH376_DISK_MOUNT ; $31
194 jsr _ch376_wait_response
195 ; if we read data value, we have then length of the volume name
201 ; char ch376_wait_response();
202 .proc _ch376_wait_response
203 ; 1 return 1 if usb controller does not respond
204 ; else A contains answer of the controller
207 ldx #$ff ; merci de laisser une valeur importante car parfois en mode non debug, le controleur ne répond pas tout de suite
220 lda #CH376_GET_STATUS