Assembly
+ch376_check_exist
+Description
+If ch376 is present, it will return $AA
+Modify
+-
+
- Accumulator +
Returns
+-
+
- Accumulator : $AA if it's OK +
Example
+ jsr ch376_check_exist
+ cmp #$AA
+ beq @exists
+ rts ; Does not exist
+@exists:
+...
+
ch376_dir_create
+Description
+create a folder
+Modify
+-
+
- Accumulator +
- X Register From ch376_wait_response_call +
- Y Register From ch376_wait_response_call +
Returns
+-
+
- Accumulator : ch376 status values +
Example
+ jsr ch376_dir_create
+ ; check accumulator here ch376_wait_response had been launched by ch376_dir_create
+
ch376_disk_capacity
+Description
+check disk capacity
+Impossible to use
+ch376_disk_mount
+Description
+perform a disk mount
+Modify
+-
+
- Accumulator +
- X Register From ch376_wait_response_call +
- Y Register From ch376_wait_response_call +
Returns
+-
+
- Accumulator : ch376 status values +
Example
+ jsr ch376_disk_mount
+ ; check accumulator here ch376_wait_response had been launched by ch376_disk_mount
+
ch376_disk_query
+Impossible to use
+ch376_file_close
+Description
+Close file
+Modify
+-
+
- Accumulator +
- X Register From ch376_wait_response_call +
- Y Register From ch376_wait_response_call +
Returns
+-
+
- Accumulator : 'ch376 status' value +
Example
+ jsr ch376_file_close
+ ; check accumulator here ch376_wait_response had been launched by ch376_file_close
+
ch376_file_create
+Description
+create file
+Modify
+-
+
- Accumulator +
- X Register From ch376_wait_response_call +
- Y Register From ch376_wait_response_call +
Returns
+-
+
- Accumulator : ch376 status value +
Example
+ jsr ch376_file_create
+ ; check accumulator here ch376_wait_response had been launched by ch376_file_create
+
ch376_file_erase
+Description
+Erase file
+Modify
+-
+
- Accumulator +
- X Register From ch376_wait_response_call +
- Y Register From ch376_wait_response_call +
Returns
+-
+
- Accumulator : ch376 status value +
Example
+ jsr ch376_file_erase
+ ; Check accumulator here :
+ ; Ch376_wait_response had been launched
+ ; By ch376_file_erase
+
ch376_file_open
+Description
+open file
+Modify
+-
+
- Accumulator +
- X Register From ch376_wait_response_call +
- Y Register From ch376_wait_response_call +
Returns
+-
+
- Accumulator : 'ch376 status' value +
Example
+ jsr ch376_file_erase
+ ; check accumulator here ch376_wait_response had been launched by ch376_file_open
+ rts
+
ch376_get_descr
+Description
+Get usb descr device
+Modify
+-
+
- X Register +
- Y Register From ch376_wait_response_call +
Returns
+-
+
- Accumulator : ch376 status values +
Example
+ jsr ch376_get_descr
+ ; check accumulator here ch376_wait_response had been launched by ch376_get_descr
+ rts
+
ch376_get_file_size
+Description
+Get file size
+Impossible to use
+ch376_ic_get_ver
+Description
+Get ch376 firmware version
+Modify
+-
+
- Accumulator +
Returns
+-
+
- Accumulator : ch376 firmware version +
Example
+ jsr ch376_ic_get_ver
+ ; check accumulator for Version (integer value)
+
ch376_issue_token_x
+Description
+Send Token for control transfert
+Input
+-
+
- Accumulator : ch376 Token +
Modify
+-
+
- Accumulator +
- X Register +
- Y Register From ch376_wait_response +
Returns
+-
+
- Accumulator : ch376 status +
Example
+ lda #$80
+ jsr ch376_issue_token_x
+ ; check accumulator for ch376 status
+
ch376_lib_version
+Description
+Get lib version
+Modify
+-
+
- Accumulator +
Returns
+-
+
- Accumulator : ch376 lib version +
Example
+ jsr ch376_lib_version
+ cmp #CH376_LIB_VERSION_2024_2
+ beq @right_version
+ ; Wrong version
+...
+ rts
+@right_version:
+...
+ rts
+
ch376_reset_all
+Description
+reset CH376
+Modify
+-
+
- Accumulator +
- X Register +
- Y Register +
Example
+ jsr ch376_reset_all
+ rts
+
ch376_seek_file
+Description
+Seek file. Performs a wait_response
+Input
+-
+
- Accumulator : First byte +
- Y Register : second byte +
- X Register : third byte byte +
- RES : Fourth byte +
Modify
+-
+
- Accumulator +
- X Register from ch376_wait_response call +
- Y Register from ch376_wait_response call +
Returns
+-
+
- Accumulator : ch376 status values +
Example
+ lda #$04
+ sta RES
+ lda #$01
+ ldy #$02
+ ldx #$03
+ jsr ch376_seek_file
+ ; check accumulator here ch376_wait_response had been launched by ch376_seek_file
+
Not tested
+ch376_set_address
+Description
+set usb address
+Modify
+-
+
- X Register +
Example
+ lda #$02
+ jsr ch376_set_address
+
ch376_set_bytes_read
+Description
+Set bytes to read. Manage only 16 bits. Others bytes are set to 0 to provide 32 bits integer to ch376 chip
+Input
+-
+
- Accumulator : Low value +
- Y Register : High value +
Modify
+-
+
- X Register +
- Accumulator +
Example
+ lda #$02
+ ldy #$10
+ jsr ch376_set_bytes_read
+
ch376_set_bytes_write
+Description
+Set bytes to write. Manage only 16 bits. Others bytes are set to 0 to provide 32 bits integer to ch376 chip
+Input
+-
+
- Accumulator : Low value +
- Y Register : High value +
Modify
+-
+
- X Register +
- Accumulator +
Example
+ lda #$02
+ ldy #$10
+ jsr ch376_set_bytes_write
+
ch376_set_config
+Description
+set config for usb device
+Input
+-
+
- Accumulator : config value +
Modify
+-
+
- X Register +
Example
+ lda #$02
+ jsr ch376_set_config
+
ch376_set_file_name
+Description
+set file_name
+Input
+-
+
- Accumulator : Low ptr adress of the string, terminated by 0 +
- Y Register : High ptr adress of the string, terminated by 0 +
Modify
+*RES +* Accumulator +* Y Register
+Example
+ lda #<myfile
+ ldy #>myfile
+ jsr ch376_set_file_name
+ rts
+myfile:
+ .byte "hello.txt"
+
ch376_set_usb_addr
+Description
+set usb_address
+Input
+-
+
- Accumulator : The address to set +
Modify
+-
+
- X Register +
Example
+; Set usb addr
+ lda #$02
+ jsr ch376_set_usb_addr
+ rts
+
ch376_set_usb_mode
+Description
+Set usb mode
+Input
+-
+
- Accumulator : The usb mode to set +
Modify
+-
+
- X Register +
Example
+ lda #CH376_USB_MODE_HOST_RESET
+ jsr ch376_set_usb_mode
+ rts
+
ch376_set_usb_speed
+Description
+Set usb mode
+Input
+-
+
- Accumulator : The speed for usb +
Modify
+-
+
- X Register +
Example
+ lda #$02
+ jsr ch376_set_usb_speed
+ rts
+
ch376_wait_response
+Description
+Perform wait_response. It's not needed to call because some commands already perform ch376_wait_response
+Modify
+-
+
- Accumulator +
- X Register +
- Y Register +
Returns
+-
+
- Accumulator : "ch376 status" value (or return 1 if usb controller does not respond) +
Example
+ jsr ch376_wait_response
+ rts
+
ch376_wr_usb_data
+Description
+Send data to usb device. First byte must be the the length to send
+Input
+-
+
- Accumulator : Low byte of ptr data +
- X Register : High byte of ptr data +
Modify
+-
+
- Accumulator +
- Y Register +
- X Register +*RES +
Example
+ lda #<data
+ ldx #>data
+ jsr ch376_wr_usb_data
+ rts
+data:
+ ; length, set port feature, set feature, port_power,0, Id port, 0, 0, 0
+ .byte 8,$23,3,8,0,1,0,0
+
+