diff --git a/.gitignore b/.gitignore index ec961a07..6bf81d86 100644 --- a/.gitignore +++ b/.gitignore @@ -114,20 +114,24 @@ Source/ZPM3/genbnk.dat Source/ZSDOS/zsdos.err # Lets explicit list all generate untracked binary files +Binary/*.upd +Binary/Apps/bbcbasic.txt +Binary/Apps/copysl.doc +Binary/Apps/copysl.doc +Binary/Apps/fdu.doc +Binary/Apps/fdu.doc Binary/Apps/Tunes/bgm.vgm Binary/Apps/Tunes/ending.vgm Binary/Apps/Tunes/inchina.vgm Binary/Apps/Tunes/shirakaw.vgm Binary/Apps/Tunes/startdem.vgm Binary/Apps/Tunes/wonder01.vgm -Binary/Apps/copysl.doc -Binary/Apps/fdu.doc Binary/Apps/zmconfig.ovr Binary/Apps/zminit.ovr -Binary/Apps/zmp.doc -Binary/Apps/zmp.hlp Binary/Apps/zmp.cfg +Binary/Apps/zmp.doc Binary/Apps/zmp.fon +Binary/Apps/zmp.hlp Binary/Apps/zmterm.ovr Binary/Apps/zmxfer.ovr Binary/CPM3/bdos3.spr @@ -146,13 +150,12 @@ Binary/CPNET/cpn12ser.lbr Binary/CPNET/cpn3duo.lbr Binary/CPNET/cpn3mt.lbr Binary/CPNET/cpn3ser.lbr -Binary/*.upd +Binary/hd1k_prefix.dat Binary/ZPM3/bnkbdos3.spr Binary/ZPM3/bnkbios3.spr Binary/ZPM3/gencpm.dat Binary/ZPM3/resbdos3.spr Binary/ZPM3/zinstal.zpm -Binary/hd1k_prefix.dat Source/BPBIOS/def-ww.lib Source/CPNET/cpn12duo.lbr Source/CPNET/cpn12mt.lbr @@ -177,6 +180,8 @@ Source/Fonts/fontvgarcc.bin Source/Fonts/fontvgarcu.asm Source/HBIOS/*.upd Source/HBIOS/build_env.cmd +Source/HBIOS/build_env.cmd +Source/HBIOS/hbios_env.sh Source/HBIOS/hbios_env.sh Source/HBIOS/netboot.mod Source/Images/*.cat @@ -194,16 +199,3 @@ Source/ZPM3/setz3.com Tools/unix/OpenSpin/build/ Tools/unix/zxcc/config.h Tools/unix/zxcc/zxcc -Binary/Apps/bbcbasic.txt - -Source/Images/hd1k_msxroms1.img -Source/Images/hd1k_msxroms1.img -Source/Images/hd1k_msxroms2.img -Source/Images/hd512_msxroms1.img -Source/Images/hd512_msxroms2.img -Source/Images/fd144_z3plus.img -Source/Images/hd1k_z3plus.img -Source/Images/hd512_z3plus.img - -Source/Images/*.cat -Source/RomDsk/*.cat diff --git a/Source/HBIOS/Config/RCZ80_std.asm b/Source/HBIOS/Config/RCZ80_std.asm index 80e756b3..bd6a44ac 100644 --- a/Source/HBIOS/Config/RCZ80_std.asm +++ b/Source/HBIOS/Config/RCZ80_std.asm @@ -106,3 +106,11 @@ SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU] AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT + +CHENABLE .SET FALSE ; CH: ENABLE CH375/376 USB SUPPORT +CH0USBENABLE .SET FALSE ; CH375: ENABLE CH375 USB DRIVER +CH1USBENABLE .SET FALSE ; CH376: ENABLE CH376 USB DRIVER +CHNATIVEENABLE .SET TRUE ; CH376: ENABLE CH376 NATIVE USB DRIVER +CHSCSIENABLE .SET TRUE ; CH376: ENABLE CH376 NATIVE MASS STORAGE DEVICES (REQUIRES CHNATIVEENABLE) +CHUFIENABLE .SET TRUE ; CH376: ENABLE CH376 NATIVE UFI FLOPPY DISK DEVICES (REQUIRES CHNATIVEENABLE) +USBKYBENABLE .SET TRUE ; USB KEYBOARD DRIVER diff --git a/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.s b/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.s index 8b622ba9..475fbd05 100644 --- a/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.s +++ b/Source/HBIOS/ch376-native/base-drv/dev_transfers.c.s @@ -48,7 +48,7 @@ _USB_MODULE_LEDS .EQU 0xff8a ;-------------------------------------------------------- ; code ;-------------------------------------------------------- -;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) { +;source-doc/base-drv/dev_transfers.c:24: * See https://www.beyondlogic.org/usbnutshell/usb4.shtml for a description of the USB control transfer ; --------------------------------- ; Function usbdev_control_transfer ; --------------------------------- @@ -56,7 +56,7 @@ _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); +;source-doc/base-drv/dev_transfers.c:25: * ld l,(ix+4) ld h,(ix+5) ld e,l @@ -82,10 +82,10 @@ _usbdev_control_transfer: pop af pop af pop af -;source-doc/base-drv/dev_transfers.c:33: } +;source-doc/base-drv/dev_transfers.c:26: * @param device the usb device 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) { +;source-doc/base-drv/dev_transfers.c:28: * @param buffer Pointer of data to send or receive into ; --------------------------------- ; Function usbdev_blk_out_trnsfer ; --------------------------------- @@ -94,7 +94,7 @@ _usbdev_blk_out_trnsfer: 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]; +;source-doc/base-drv/dev_transfers.c:30: */ ld e,(ix+4) ld d,(ix+5) ld c, e @@ -102,7 +102,7 @@ _usbdev_blk_out_trnsfer: 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); +;source-doc/base-drv/dev_transfers.c:32: return usb_control_transfer(cmd_packet, buffer, device->address, device->max_packet_size); ld l, e ld h, d ld a, (hl) @@ -131,11 +131,11 @@ _usbdev_blk_out_trnsfer: pop bc ld a, l ld (_result), a -;source-doc/base-drv/dev_transfers.c:41: if (result == USB_ERR_STALL) { +;source-doc/base-drv/dev_transfers.c:34: ld a,(_result) sub 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); +;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) { ld l, e ld h, d inc hl @@ -164,23 +164,23 @@ _usbdev_blk_out_trnsfer: pop af inc sp pop bc -;source-doc/base-drv/dev_transfers.c:43: endpoint->toggle = 0; +;source-doc/base-drv/dev_transfers.c:36: ld a, (bc) and 0xfe ld (bc), a -;source-doc/base-drv/dev_transfers.c:44: return USB_ERR_STALL; +;source-doc/base-drv/dev_transfers.c:37: endpoint_param *const endpoint = &dev->endpoints[ENDPOINT_BULK_OUT]; 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; +;source-doc/base-drv/dev_transfers.c:40: +;source-doc/base-drv/dev_transfers.c:43: endpoint->toggle = 0; ld hl,(_result) l_usbdev_blk_out_trnsfer_00104: -;source-doc/base-drv/dev_transfers.c:51: } +;source-doc/base-drv/dev_transfers.c:44: return USB_ERR_STALL; 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) { +;source-doc/base-drv/dev_transfers.c:46: ; --------------------------------- ; Function usbdev_bulk_in_transfer ; --------------------------------- @@ -189,12 +189,12 @@ _usbdev_bulk_in_transfer: 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]; +;source-doc/base-drv/dev_transfers.c:47: RETURN_CHECK(result); 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); +;source-doc/base-drv/dev_transfers.c:49: done: ld e,c ld d,b ex de,hl @@ -224,11 +224,11 @@ _usbdev_bulk_in_transfer: pop bc ld a, l ld (_result), a -;source-doc/base-drv/dev_transfers.c:58: if (result == USB_ERR_STALL) { +;source-doc/base-drv/dev_transfers.c:51: } ld a,(_result) sub 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); +;source-doc/base-drv/dev_transfers.c:52: ld l, c ld h, b inc hl @@ -258,22 +258,22 @@ _usbdev_bulk_in_transfer: pop af inc sp pop de -;source-doc/base-drv/dev_transfers.c:60: endpoint->toggle = 0; +;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) { ex de, hl res 0, (hl) -;source-doc/base-drv/dev_transfers.c:61: return USB_ERR_STALL; +;source-doc/base-drv/dev_transfers.c:54: endpoint_param *const endpoint = &dev->endpoints[ENDPOINT_BULK_IN]; 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; +;source-doc/base-drv/dev_transfers.c:57: +;source-doc/base-drv/dev_transfers.c:59: usbtrn_clear_endpoint_halt(endpoint->number, dev->address, dev->max_packet_size); ld hl,(_result) l_usbdev_bulk_in_transfer_00104: -;source-doc/base-drv/dev_transfers.c:67: } +;source-doc/base-drv/dev_transfers.c:60: endpoint->toggle = 0; inc sp pop ix ret -;source-doc/base-drv/dev_transfers.c:69: usb_error usbdev_dat_in_trnsfer(device_config *const device, +;source-doc/base-drv/dev_transfers.c:62: } ; --------------------------------- ; Function usbdev_dat_in_trnsfer ; --------------------------------- @@ -282,7 +282,7 @@ _usbdev_dat_in_trnsfer: ld ix,0 add ix,sp dec sp -;source-doc/base-drv/dev_transfers.c:74: endpoint_param *const endpoint = &device->endpoints[endpoint_type]; +;source-doc/base-drv/dev_transfers.c:67: } ld e,(ix+4) ld d,(ix+5) ld c, e @@ -301,7 +301,7 @@ _usbdev_dat_in_trnsfer: 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); +;source-doc/base-drv/dev_transfers.c:69: usb_error usbdev_dat_in_trnsfer(device_config *const device, ld l, e ld h, d ld a, (hl) @@ -330,11 +330,11 @@ _usbdev_dat_in_trnsfer: pop bc ld a, l ld (_result), a -;source-doc/base-drv/dev_transfers.c:78: if (result == USB_ERR_STALL) { +;source-doc/base-drv/dev_transfers.c:71: const uint16_t buffer_size, ld a,(_result) sub 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); +;source-doc/base-drv/dev_transfers.c:72: const usb_endpoint_type endpoint_type) { ld l, e ld h, d inc hl @@ -363,23 +363,23 @@ _usbdev_dat_in_trnsfer: pop af inc sp pop bc -;source-doc/base-drv/dev_transfers.c:80: endpoint->toggle = 0; +;source-doc/base-drv/dev_transfers.c:73: ld a, (bc) and 0xfe ld (bc), a -;source-doc/base-drv/dev_transfers.c:81: return USB_ERR_STALL; +;source-doc/base-drv/dev_transfers.c:74: endpoint_param *const endpoint = &device->endpoints[endpoint_type]; 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; +;source-doc/base-drv/dev_transfers.c:77: +;source-doc/base-drv/dev_transfers.c:79: usbtrn_clear_endpoint_halt(endpoint->number, device->address, device->max_packet_size); ld hl,(_result) l_usbdev_dat_in_trnsfer_00104: -;source-doc/base-drv/dev_transfers.c:87: } +;source-doc/base-drv/dev_transfers.c:80: endpoint->toggle = 0; 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) { +;source-doc/base-drv/dev_transfers.c:82: } ; --------------------------------- ; Function usbdev_dat_in_trnsfer_0 ; --------------------------------- @@ -388,13 +388,13 @@ _usbdev_dat_in_trnsfer_0: ld ix,0 add ix,sp push af -;source-doc/base-drv/dev_transfers.c:90: endpoint_param *const endpoint = &device->endpoints[0]; +;source-doc/base-drv/dev_transfers.c:83: 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); +;source-doc/base-drv/dev_transfers.c:85: done: ld l, e ld h, d ld a, (hl) @@ -423,11 +423,11 @@ _usbdev_dat_in_trnsfer_0: pop de ld a, l ld (_result), a -;source-doc/base-drv/dev_transfers.c:94: if (result == USB_ERR_STALL) { +;source-doc/base-drv/dev_transfers.c:87: } ld a,(_result) sub 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); +;source-doc/base-drv/dev_transfers.c:88: ld l, e ld h, d inc hl @@ -452,18 +452,18 @@ _usbdev_dat_in_trnsfer_0: call _usbtrn_clear_endpoint_halt pop af inc sp -;source-doc/base-drv/dev_transfers.c:96: endpoint->toggle = 0; +;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) { pop hl push hl res 0, (hl) -;source-doc/base-drv/dev_transfers.c:97: return USB_ERR_STALL; +;source-doc/base-drv/dev_transfers.c:90: endpoint_param *const endpoint = &device->endpoints[0]; 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; +;source-doc/base-drv/dev_transfers.c:93: ld hl,(_result) l_usbdev_dat_in_trnsfer_0_00103: -;source-doc/base-drv/dev_transfers.c:101: } +;source-doc/base-drv/dev_transfers.c:94: if (result == USB_ERR_STALL) { ld sp, ix pop ix ret diff --git a/Source/HBIOS/ch376-native/base-drv/protocol.c.s b/Source/HBIOS/ch376-native/base-drv/protocol.c.s index d91b03d5..c63f157d 100644 --- a/Source/HBIOS/ch376-native/base-drv/protocol.c.s +++ b/Source/HBIOS/ch376-native/base-drv/protocol.c.s @@ -48,7 +48,7 @@ _USB_MODULE_LEDS .EQU 0xff8a ;-------------------------------------------------------- ; code ;-------------------------------------------------------- -;source-doc/base-drv/protocol.c:29: usb_error usbtrn_get_descriptor(device_descriptor *const buffer) { +;source-doc/base-drv/protocol.c:25: * ; --------------------------------- ; Function usbtrn_get_descriptor ; --------------------------------- @@ -59,18 +59,18 @@ _usbtrn_get_descriptor: ld hl, -8 add hl, sp ld sp, hl -;source-doc/base-drv/protocol.c:31: cmd = cmd_get_device_descriptor; +;source-doc/base-drv/protocol.c:27: * @return usb_error USB_ERR_OK if all good, otherwise specific error code ld hl,0 add hl, sp ex de, hl ld bc,0x0008 ld hl,_cmd_get_device_descriptor ldir -;source-doc/base-drv/protocol.c:32: cmd.wLength = 8; +;source-doc/base-drv/protocol.c:28: */ ld (ix-2),0x08 xor a ld (ix-1),a -;source-doc/base-drv/protocol.c:34: result = usb_control_transfer(&cmd, (uint8_t *)buffer, 0, 8); +;source-doc/base-drv/protocol.c:30: setup_packet cmd; ld c,(ix+4) ld b,(ix+5) ld e, c @@ -93,11 +93,11 @@ _usbtrn_get_descriptor: pop bc ld a, l ld (_result), a -;source-doc/base-drv/protocol.c:36: CHECK(result); +;source-doc/base-drv/protocol.c:32: cmd.wLength = 8; ld a,(_result) or a jr NZ,l_usbtrn_get_descriptor_00103 -;source-doc/base-drv/protocol.c:38: cmd = cmd_get_device_descriptor; +;source-doc/base-drv/protocol.c:34: result = usb_control_transfer(&cmd, (uint8_t *)buffer, 0, 8); ld hl,0 add hl, sp ex de, hl @@ -106,11 +106,11 @@ _usbtrn_get_descriptor: ld hl,_cmd_get_device_descriptor ldir pop bc -;source-doc/base-drv/protocol.c:39: cmd.wLength = 18; +;source-doc/base-drv/protocol.c:35: ld (ix-2),0x12 xor a ld (ix-1),a -;source-doc/base-drv/protocol.c:40: result = usb_control_transfer(&cmd, (uint8_t *)buffer, 0, buffer->bMaxPacketSize0); +;source-doc/base-drv/protocol.c:36: CHECK(result); ld e,(ix+4) ld d,(ix+5) ld hl,7 @@ -131,12 +131,12 @@ _usbtrn_get_descriptor: pop af ld a, l ld (_result), a -;source-doc/base-drv/protocol.c:42: RETURN_CHECK(result); -;source-doc/base-drv/protocol.c:44: done: +;source-doc/base-drv/protocol.c:38: cmd = cmd_get_device_descriptor; +;source-doc/base-drv/protocol.c:40: result = usb_control_transfer(&cmd, (uint8_t *)buffer, 0, buffer->bMaxPacketSize0); l_usbtrn_get_descriptor_00103: -;source-doc/base-drv/protocol.c:45: return result; +;source-doc/base-drv/protocol.c:41: ld hl,(_result) -;source-doc/base-drv/protocol.c:46: } +;source-doc/base-drv/protocol.c:42: RETURN_CHECK(result); ld sp, ix pop ix ret @@ -148,7 +148,7 @@ _cmd_get_device_descriptor: DEFB +0x00 DEFB +0x00 DEFW +0x0008 -;source-doc/base-drv/protocol.c:54: usb_error usbtrn_get_descriptor2(device_descriptor *const buffer, const uint8_t device_address) { +;source-doc/base-drv/protocol.c:46: } ; --------------------------------- ; Function usbtrn_get_descriptor2 ; --------------------------------- @@ -159,18 +159,18 @@ _usbtrn_get_descriptor2: ld hl, -8 add hl, sp ld sp, hl -;source-doc/base-drv/protocol.c:56: cmd = cmd_get_device_descriptor; +;source-doc/base-drv/protocol.c:48: /** ld hl,0 add hl, sp ex de, hl ld bc,0x0008 ld hl,_cmd_get_device_descriptor ldir -;source-doc/base-drv/protocol.c:57: cmd.wLength = 8; +;source-doc/base-drv/protocol.c:49: * @brief Issue GET_DESCRIPTOR request to retrieve the device descriptor for usb device at the specified address ld (ix-2),0x08 xor a ld (ix-1),a -;source-doc/base-drv/protocol.c:59: result = usb_control_transfer(&cmd, (uint8_t *)buffer, device_address, 8); +;source-doc/base-drv/protocol.c:51: * @param buffer the buffer to store the device descriptor in ld c,(ix+4) ld b,(ix+5) ld e, c @@ -190,11 +190,11 @@ _usbtrn_get_descriptor2: pop bc ld a, l ld (_result), a -;source-doc/base-drv/protocol.c:61: CHECK(result); +;source-doc/base-drv/protocol.c:53: */ ld a,(_result) or a jr NZ,l_usbtrn_get_descriptor2_00103 -;source-doc/base-drv/protocol.c:63: cmd = cmd_get_device_descriptor; +;source-doc/base-drv/protocol.c:55: setup_packet cmd; ld hl,0 add hl, sp ex de, hl @@ -203,11 +203,11 @@ _usbtrn_get_descriptor2: ld hl,_cmd_get_device_descriptor ldir pop bc -;source-doc/base-drv/protocol.c:64: cmd.wLength = 18; +;source-doc/base-drv/protocol.c:56: cmd = cmd_get_device_descriptor; ld (ix-2),0x12 xor a ld (ix-1),a -;source-doc/base-drv/protocol.c:65: RETURN_CHECK(usb_control_transfer(&cmd, (uint8_t *)buffer, device_address, buffer->bMaxPacketSize0)); +;source-doc/base-drv/protocol.c:57: cmd.wLength = 8; ld e,(ix+4) ld d,(ix+5) ld hl,7 @@ -225,15 +225,15 @@ _usbtrn_get_descriptor2: pop af ld a, l ld (_result), a -;source-doc/base-drv/protocol.c:66: done: +;source-doc/base-drv/protocol.c:58: l_usbtrn_get_descriptor2_00103: -;source-doc/base-drv/protocol.c:67: return result; +;source-doc/base-drv/protocol.c:59: result = usb_control_transfer(&cmd, (uint8_t *)buffer, device_address, 8); ld hl,(_result) -;source-doc/base-drv/protocol.c:68: } +;source-doc/base-drv/protocol.c:60: ld sp, ix pop ix ret -;source-doc/base-drv/protocol.c:78: usb_error usbtrn_set_address(const uint8_t device_address) __z88dk_fastcall { +;source-doc/base-drv/protocol.c:66: done: ; --------------------------------- ; Function usbtrn_set_address ; --------------------------------- @@ -246,7 +246,7 @@ _usbtrn_set_address: push af push af ld c, l -;source-doc/base-drv/protocol.c:80: cmd = cmd_set_device_address; +;source-doc/base-drv/protocol.c:68: } ld hl,0 add hl, sp ex de, hl @@ -255,9 +255,9 @@ _usbtrn_set_address: ld hl,_cmd_set_device_address ldir pop bc -;source-doc/base-drv/protocol.c:81: cmd.bValue[0] = device_address; +;source-doc/base-drv/protocol.c:69: ld (ix-6),c -;source-doc/base-drv/protocol.c:83: return usb_control_transfer(&cmd, 0, 0, 0); +;source-doc/base-drv/protocol.c:71: xor a push af inc sp @@ -270,7 +270,7 @@ _usbtrn_set_address: add hl, sp push hl call _usb_control_transfer -;source-doc/base-drv/protocol.c:84: } +;source-doc/base-drv/protocol.c:72: /** ld sp,ix pop ix ret @@ -282,7 +282,7 @@ _cmd_set_device_address: DEFB +0x00 DEFB +0x00 DEFW +0x0000 -;source-doc/base-drv/protocol.c:94: usb_error usbtrn_set_configuration(const uint8_t device_address, const uint8_t max_packet_size, const uint8_t configuration) { +;source-doc/base-drv/protocol.c:78: usb_error usbtrn_set_address(const uint8_t device_address) __z88dk_fastcall { ; --------------------------------- ; Function usbtrn_set_configuration ; --------------------------------- @@ -293,7 +293,7 @@ _usbtrn_set_configuration: ld hl, -8 add hl, sp ld sp, hl -;source-doc/base-drv/protocol.c:96: cmd = cmd_set_configuration; +;source-doc/base-drv/protocol.c:80: cmd = cmd_set_device_address; ld hl,0 add hl, sp ld e,l @@ -303,10 +303,10 @@ _usbtrn_set_configuration: ld hl,_cmd_set_configuration ldir pop bc -;source-doc/base-drv/protocol.c:97: cmd.bValue[0] = configuration; +;source-doc/base-drv/protocol.c:81: cmd.bValue[0] = device_address; ld a,(ix+6) ld (ix-6),a -;source-doc/base-drv/protocol.c:99: return usb_control_transfer(&cmd, 0, device_address, max_packet_size); +;source-doc/base-drv/protocol.c:83: return usb_control_transfer(&cmd, 0, 0, 0); ld h,(ix+5) ld l,(ix+4) push hl @@ -314,7 +314,7 @@ _usbtrn_set_configuration: push hl push bc call _usb_control_transfer -;source-doc/base-drv/protocol.c:100: } +;source-doc/base-drv/protocol.c:84: } ld sp,ix pop ix ret @@ -326,7 +326,7 @@ _cmd_set_configuration: DEFB +0x00 DEFB +0x00 DEFW +0x0000 -;source-doc/base-drv/protocol.c:114: usb_error usbtrn_get_config_descriptor(config_descriptor *const buffer, +;source-doc/base-drv/protocol.c:90: * ; --------------------------------- ; Function usbtrn_get_config_descriptor ; --------------------------------- @@ -337,7 +337,7 @@ _usbtrn_get_config_descriptor: ld hl, -8 add hl, sp ld sp, hl -;source-doc/base-drv/protocol.c:120: cmd = cmd_get_config_descriptor; +;source-doc/base-drv/protocol.c:96: cmd = cmd_set_configuration; ld hl,0 add hl, sp ld e,l @@ -347,14 +347,14 @@ _usbtrn_get_config_descriptor: ld hl,_cmd_get_config_descriptor ldir pop bc -;source-doc/base-drv/protocol.c:121: cmd.bValue[0] = config_index; +;source-doc/base-drv/protocol.c:97: cmd.bValue[0] = configuration; ld a,(ix+6) ld (ix-6),a -;source-doc/base-drv/protocol.c:122: cmd.wLength = (uint16_t)buffer_size; +;source-doc/base-drv/protocol.c:98: ld e,(ix+7) ld (ix-2),e ld (ix-1),0x00 -;source-doc/base-drv/protocol.c:124: return usb_control_transfer(&cmd, (uint8_t *)buffer, device_address, max_packet_size); +;source-doc/base-drv/protocol.c:100: } ld e,(ix+4) ld d,(ix+5) ld h,(ix+9) @@ -363,7 +363,7 @@ _usbtrn_get_config_descriptor: push de push bc call _usb_control_transfer -;source-doc/base-drv/protocol.c:125: } +;source-doc/base-drv/protocol.c:101: ld sp,ix pop ix ret @@ -375,7 +375,7 @@ _cmd_get_config_descriptor: DEFB +0x00 DEFB +0x00 DEFW +0x0000 -;source-doc/base-drv/protocol.c:127: usb_error usbtrn_gfull_cfg_desc(const uint8_t config_index, +;source-doc/base-drv/protocol.c:103: ; --------------------------------- ; Function usbtrn_gfull_cfg_desc ; --------------------------------- @@ -383,7 +383,7 @@ _usbtrn_gfull_cfg_desc: push ix ld ix,0 add ix,sp -;source-doc/base-drv/protocol.c:134: max_packet_size)); +;source-doc/base-drv/protocol.c:110: * @param device_address the usb address of the device ld c,(ix+8) ld b,(ix+9) push bc @@ -407,20 +407,20 @@ _usbtrn_gfull_cfg_desc: ld a,(_result) or a jr NZ,l_usbtrn_gfull_cfg_desc_00107 -;source-doc/base-drv/protocol.c:136: uint8_t max_length = ((config_descriptor *)buffer)->wTotalLength; +;source-doc/base-drv/protocol.c:112: * @return usb_error USB_ERR_OK if all good, otherwise specific error code ld l, c ld h, b inc hl inc hl ld d, (hl) -;source-doc/base-drv/protocol.c:137: if (max_length > max_buffer_size) +;source-doc/base-drv/protocol.c:113: */ ld a,(ix+7) sub d jr NC,l_usbtrn_gfull_cfg_desc_00104 -;source-doc/base-drv/protocol.c:138: max_length = max_buffer_size; +;source-doc/base-drv/protocol.c:114: usb_error usbtrn_get_config_descriptor(config_descriptor *const buffer, ld d,(ix+7) l_usbtrn_gfull_cfg_desc_00104: -;source-doc/base-drv/protocol.c:140: CHECK(usbtrn_get_config_descriptor((config_descriptor *)buffer, config_index, max_length, device_address, max_packet_size)); +;source-doc/base-drv/protocol.c:116: const uint8_t buffer_size, ld h,(ix+6) ld l,(ix+5) push hl @@ -434,20 +434,20 @@ l_usbtrn_gfull_cfg_desc_00104: ld a, l ld (_result), a ld a,(_result) -;source-doc/base-drv/protocol.c:142: return USB_ERR_OK; +;source-doc/base-drv/protocol.c:118: const uint8_t max_packet_size) { or a jr NZ,l_usbtrn_gfull_cfg_desc_00107 ld l,a jr l_usbtrn_gfull_cfg_desc_00108 -;source-doc/base-drv/protocol.c:143: done: +;source-doc/base-drv/protocol.c:119: setup_packet cmd; l_usbtrn_gfull_cfg_desc_00107: -;source-doc/base-drv/protocol.c:144: return result; +;source-doc/base-drv/protocol.c:120: cmd = cmd_get_config_descriptor; ld hl,(_result) l_usbtrn_gfull_cfg_desc_00108: -;source-doc/base-drv/protocol.c:145: } +;source-doc/base-drv/protocol.c:121: cmd.bValue[0] = config_index; pop ix ret -;source-doc/base-drv/protocol.c:149: usb_error usbtrn_clear_endpoint_halt(const uint8_t endpoint_number, const uint8_t device_address, const uint8_t max_packet_size) { +;source-doc/base-drv/protocol.c:125: } ; --------------------------------- ; Function usbtrn_clear_endpoint_halt ; --------------------------------- @@ -458,7 +458,7 @@ _usbtrn_clear_endpoint_halt: ld hl, -8 add hl, sp ld sp, hl -;source-doc/base-drv/protocol.c:151: cmd = usb_cmd_clear_endpoint_halt; +;source-doc/base-drv/protocol.c:127: usb_error usbtrn_gfull_cfg_desc(const uint8_t config_index, ld hl,0 add hl, sp ld e,l @@ -468,10 +468,10 @@ _usbtrn_clear_endpoint_halt: ld hl,_usb_cmd_clear_endpoint_halt ldir pop bc -;source-doc/base-drv/protocol.c:152: cmd.bIndex[0] = endpoint_number; +;source-doc/base-drv/protocol.c:128: const uint8_t device_address, ld a,(ix+4) ld (ix-4),a -;source-doc/base-drv/protocol.c:154: return usb_control_transfer(&cmd, (uint8_t *)0, device_address, max_packet_size); +;source-doc/base-drv/protocol.c:130: const uint8_t max_buffer_size, ld h,(ix+6) ld l,(ix+5) push hl @@ -479,7 +479,7 @@ _usbtrn_clear_endpoint_halt: push hl push bc call _usb_control_transfer -;source-doc/base-drv/protocol.c:155: } +;source-doc/base-drv/protocol.c:131: uint8_t *const buffer) { ld sp,ix pop ix ret diff --git a/Source/HBIOS/ch376-native/base-drv/transfers.c.s b/Source/HBIOS/ch376-native/base-drv/transfers.c.s index cd7bb9a1..0cf7ef14 100644 --- a/Source/HBIOS/ch376-native/base-drv/transfers.c.s +++ b/Source/HBIOS/ch376-native/base-drv/transfers.c.s @@ -48,7 +48,7 @@ _USB_MODULE_LEDS .EQU 0xff8a ;-------------------------------------------------------- ; code ;-------------------------------------------------------- -;source-doc/base-drv/transfers.c:24: usb_error usb_ctrl_trnsfer_ext(const setup_packet *const cmd_packet, +;source-doc/base-drv/transfers.c:23: ; --------------------------------- ; Function usb_ctrl_trnsfer_ext ; --------------------------------- @@ -56,26 +56,26 @@ _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) +;source-doc/base-drv/transfers.c:27: const uint8_t max_packet_size) { ld a,(ix+5) sub 0x80 jr NC,l_usb_ctrl_trnsfer_ext_00102 -;source-doc/base-drv/transfers.c:29: return USB_BAD_ADDRESS; +;source-doc/base-drv/transfers.c:28: if ((uint16_t)cmd_packet < LOWER_SAFE_RAM_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) +;source-doc/base-drv/transfers.c:30: ld a,(ix+7) or (ix+6) jr Z,l_usb_ctrl_trnsfer_ext_00104 ld a,(ix+7) sub 0x80 jr NC,l_usb_ctrl_trnsfer_ext_00104 -;source-doc/base-drv/transfers.c:32: return USB_BAD_ADDRESS; +;source-doc/base-drv/transfers.c:31: if (buffer != 0 && (uint16_t)buffer < LOWER_SAFE_RAM_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); +;source-doc/base-drv/transfers.c:33: ld h,(ix+9) ld l,(ix+8) push hl @@ -90,10 +90,10 @@ l_usb_ctrl_trnsfer_ext_00104: pop af pop af l_usb_ctrl_trnsfer_ext_00106: -;source-doc/base-drv/transfers.c:35: } +;source-doc/base-drv/transfers.c:34: return usb_control_transfer(cmd_packet, buffer, device_address, max_packet_size); pop ix ret -;source-doc/base-drv/transfers.c:47: usb_error usb_control_transfer(const setup_packet *const cmd_packet, +;source-doc/base-drv/transfers.c:38: * @brief Perform a USB control transfer (in or out) ; --------------------------------- ; Function usb_control_transfer ; --------------------------------- @@ -103,7 +103,7 @@ _usb_control_transfer: add ix,sp push af push af -;source-doc/base-drv/transfers.c:52: endpoint_param endpoint = {1, 0, max_packet_size}; +;source-doc/base-drv/transfers.c:43: * @param device_address usb device address ld hl,0 add hl, sp set 0, (hl) @@ -125,29 +125,29 @@ _usb_control_transfer: and 0xfc or e ld (hl), a -;source-doc/base-drv/transfers.c:54: const uint8_t transferIn = (cmd_packet->bmRequestType & 0x80); +;source-doc/base-drv/transfers.c:45: * @return usb_error USB_ERR_OK if all good, otherwise specific error code ld c,(ix+4) ld b,(ix+5) ld a, (bc) and 0x80 -;source-doc/base-drv/transfers.c:56: if (transferIn && buffer == 0) +;source-doc/base-drv/transfers.c:47: usb_error usb_control_transfer(const setup_packet *const cmd_packet, ld (ix-1),a or a jr Z,l_usb_control_transfer_00102 ld a,(ix+7) or (ix+6) jr NZ,l_usb_control_transfer_00102 -;source-doc/base-drv/transfers.c:57: return USB_ERR_OTHER; +;source-doc/base-drv/transfers.c:48: void *const buffer, ld l,0x0f jp l_usb_control_transfer_00114 l_usb_control_transfer_00102: -;source-doc/base-drv/transfers.c:59: critical_begin(); +;source-doc/base-drv/transfers.c:50: const uint8_t max_packet_size) { 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)); +;source-doc/base-drv/transfers.c:54: const uint8_t transferIn = (cmd_packet->bmRequestType & 0x80); ld e,(ix+4) ld d,(ix+5) push bc @@ -161,16 +161,16 @@ l_usb_control_transfer_00102: call _ch_issue_token_setup call _ch_short_wait_int_and_get_stat pop bc -;source-doc/base-drv/transfers.c:66: CHECK(result); +;source-doc/base-drv/transfers.c:57: return USB_ERR_OTHER; ld a, l or a jr NZ,l_usb_control_transfer_00113 -;source-doc/base-drv/transfers.c:68: const uint16_t length = cmd_packet->wLength; +;source-doc/base-drv/transfers.c:59: critical_begin(); 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)) +;source-doc/base-drv/transfers.c:62: ld a,(hl) ld b,a or c @@ -203,58 +203,58 @@ l_usb_control_transfer_00118: 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; +;source-doc/base-drv/transfers.c:63: ch_write_data((const uint8_t *)cmd_packet, sizeof(setup_packet)); ld l,0x00 l_usb_control_transfer_00117: -;source-doc/base-drv/transfers.c:74: CHECK(result) +;source-doc/base-drv/transfers.c:65: result = ch_short_wait_int_and_get_statu(); ld a, l or a jr NZ,l_usb_control_transfer_00113 -;source-doc/base-drv/transfers.c:76: if (transferIn) { +;source-doc/base-drv/transfers.c:67: ld a,(ix-1) or a jr Z,l_usb_control_transfer_00112 -;source-doc/base-drv/transfers.c:77: ch_command(CH_CMD_WR_HOST_DATA); +;source-doc/base-drv/transfers.c:68: const uint16_t length = cmd_packet->wLength; ld l,0x2c call _ch_command -;source-doc/base-drv/transfers.c:78: CH376_DATA_PORT = 0; +;source-doc/base-drv/transfers.c:69: ld a,0x00 ld bc,_CH376_DATA_PORT out (c),a -;source-doc/base-drv/transfers.c:79: ch_issue_token_out_ep0(); +;source-doc/base-drv/transfers.c:70: result = length != 0 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 */ +;source-doc/base-drv/transfers.c:71: ? (transferIn ? ch_data_in_transfer(buffer, length, &endpoint) : ch_data_out_transfer(buffer, length, &endpoint)) call _ch_long_wait_int_and_get_statu -;source-doc/base-drv/transfers.c:82: if (result == USB_ERR_OK || result == USB_ERR_STALL) { +;source-doc/base-drv/transfers.c:73: ld a,l or a jr Z,l_usb_control_transfer_00108 sub 0x02 jr NZ,l_usb_control_transfer_00113 l_usb_control_transfer_00108: -;source-doc/base-drv/transfers.c:83: result = USB_ERR_OK; +;source-doc/base-drv/transfers.c:74: CHECK(result) ld l,0x00 -;source-doc/base-drv/transfers.c:84: goto done; +;source-doc/base-drv/transfers.c:75: jr l_usb_control_transfer_00113 -;source-doc/base-drv/transfers.c:87: RETURN_CHECK(result); +;source-doc/base-drv/transfers.c:78: CH376_DATA_PORT = 0; l_usb_control_transfer_00112: -;source-doc/base-drv/transfers.c:90: ch_issue_token_in_ep0(); +;source-doc/base-drv/transfers.c:81: call _ch_issue_token_in_ep0 -;source-doc/base-drv/transfers.c:91: result = ch_long_wait_int_and_get_status(); +;source-doc/base-drv/transfers.c:82: if (result == USB_ERR_OK || result == USB_ERR_STALL) { call _ch_long_wait_int_and_get_statu -;source-doc/base-drv/transfers.c:95: done: +;source-doc/base-drv/transfers.c:86: l_usb_control_transfer_00113: -;source-doc/base-drv/transfers.c:96: critical_end(); +;source-doc/base-drv/transfers.c:87: RETURN_CHECK(result); push hl call _critical_end pop hl -;source-doc/base-drv/transfers.c:97: return result; +;source-doc/base-drv/transfers.c:88: } l_usb_control_transfer_00114: -;source-doc/base-drv/transfers.c:98: } +;source-doc/base-drv/transfers.c:89: 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) { +;source-doc/base-drv/transfers.c:92: ; --------------------------------- ; Function usb_dat_in_trnsfer_ext ; --------------------------------- @@ -262,26 +262,26 @@ _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) +;source-doc/base-drv/transfers.c:93: RETURN_CHECK(result); ld a,(ix+5) or (ix+4) jr Z,l_usb_dat_in_trnsfer_ext_00102 ld a,(ix+5) sub 0x80 jr NC,l_usb_dat_in_trnsfer_ext_00102 -;source-doc/base-drv/transfers.c:103: return USB_BAD_ADDRESS; +;source-doc/base-drv/transfers.c:94: 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) +;source-doc/base-drv/transfers.c:96: critical_end(); ld a,(ix+10) sub 0x80 jr NC,l_usb_dat_in_trnsfer_ext_00105 -;source-doc/base-drv/transfers.c:106: return USB_BAD_ADDRESS; +;source-doc/base-drv/transfers.c:97: return result; 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); +;source-doc/base-drv/transfers.c:99: ld l,(ix+9) ld h,(ix+10) push hl @@ -300,10 +300,10 @@ l_usb_dat_in_trnsfer_ext_00105: pop af inc sp l_usb_dat_in_trnsfer_ext_00106: -;source-doc/base-drv/transfers.c:109: } +;source-doc/base-drv/transfers.c:100: usb_error 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) { +;source-doc/base-drv/transfers.c:103: return USB_BAD_ADDRESS; ; --------------------------------- ; Function usb_dat_in_trns_n_ext ; --------------------------------- @@ -311,34 +311,34 @@ _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) +;source-doc/base-drv/transfers.c:104: ld a,(ix+5) or (ix+4) jr Z,l_usb_dat_in_trns_n_ext_00102 ld a,(ix+5) and 0xc0 jr NZ,l_usb_dat_in_trns_n_ext_00102 -;source-doc/base-drv/transfers.c:114: return USB_BAD_ADDRESS; +;source-doc/base-drv/transfers.c:105: if ((uint16_t)endpoint < LOWER_SAFE_RAM_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) +;source-doc/base-drv/transfers.c:107: ld a,(ix+10) and 0xc0 jr NZ,l_usb_dat_in_trns_n_ext_00105 -;source-doc/base-drv/transfers.c:117: return USB_BAD_ADDRESS; +;source-doc/base-drv/transfers.c:108: return usb_data_in_transfer(buffer, buffer_size, device_address, endpoint); 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) +;source-doc/base-drv/transfers.c:110: ld a,(ix+7) and 0xc0 jr NZ,l_usb_dat_in_trns_n_ext_00107 -;source-doc/base-drv/transfers.c:120: return USB_BAD_ADDRESS; +;source-doc/base-drv/transfers.c:111: usb_error 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); +;source-doc/base-drv/transfers.c:113: if (buffer != 0 && ((uint16_t)buffer & 0xC000) == 0) ld c,(ix+6) ld b,(ix+7) ld l,(ix+9) @@ -357,10 +357,10 @@ l_usb_dat_in_trns_n_ext_00107: pop af inc sp l_usb_dat_in_trns_n_ext_00108: -;source-doc/base-drv/transfers.c:123: } +;source-doc/base-drv/transfers.c:114: return USB_BAD_ADDRESS; 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) { +;source-doc/base-drv/transfers.c:119: if (((uint16_t)buffer_size & 0xC000) == 0) ; --------------------------------- ; Function usb_data_in_transfer ; --------------------------------- @@ -368,12 +368,12 @@ _usb_data_in_transfer: push ix ld ix,0 add ix,sp -;source-doc/base-drv/transfers.c:136: critical_begin(); +;source-doc/base-drv/transfers.c:120: return USB_BAD_ADDRESS; call _critical_begin -;source-doc/base-drv/transfers.c:138: ch_set_usb_address(device_address); +;source-doc/base-drv/transfers.c:122: return usb_data_in_transfer_n(buffer, buffer_size, device_address, endpoint); 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); +;source-doc/base-drv/transfers.c:124: ld l,(ix+9) ld h,(ix+10) push hl @@ -389,14 +389,14 @@ _usb_data_in_transfer: pop af ld a, l ld (_result), a -;source-doc/base-drv/transfers.c:142: critical_end(); +;source-doc/base-drv/transfers.c:126: * @brief Perform a USB data in on the specififed endpoint call _critical_end -;source-doc/base-drv/transfers.c:144: return result; +;source-doc/base-drv/transfers.c:128: * @param buffer the buffer to receive the data ld hl,(_result) -;source-doc/base-drv/transfers.c:145: } +;source-doc/base-drv/transfers.c:129: * @param buffer_size the maximum size of data to be received 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) { +;source-doc/base-drv/transfers.c:134: usb_error ; --------------------------------- ; Function usb_data_in_transfer_n ; --------------------------------- @@ -404,12 +404,12 @@ _usb_data_in_transfer_n: push ix ld ix,0 add ix,sp -;source-doc/base-drv/transfers.c:158: critical_begin(); +;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) { call _critical_begin -;source-doc/base-drv/transfers.c:160: ch_set_usb_address(device_address); +;source-doc/base-drv/transfers.c:137: 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); +;source-doc/base-drv/transfers.c:139: ld l,(ix+9) ld h,(ix+10) push hl @@ -425,14 +425,14 @@ _usb_data_in_transfer_n: pop af ld a, l ld (_result), a -;source-doc/base-drv/transfers.c:164: critical_end(); +;source-doc/base-drv/transfers.c:141: call _critical_end -;source-doc/base-drv/transfers.c:166: return result; +;source-doc/base-drv/transfers.c:143: ld hl,(_result) -;source-doc/base-drv/transfers.c:167: } +;source-doc/base-drv/transfers.c:144: return result; 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) { +;source-doc/base-drv/transfers.c:149: * ; --------------------------------- ; Function usb_data_out_transfer ; --------------------------------- @@ -440,12 +440,12 @@ _usb_data_out_transfer: push ix ld ix,0 add ix,sp -;source-doc/base-drv/transfers.c:180: critical_begin(); +;source-doc/base-drv/transfers.c:150: * @param buffer the buffer to receive the data - must be 62 bytes call _critical_begin -;source-doc/base-drv/transfers.c:182: ch_set_usb_address(device_address); +;source-doc/base-drv/transfers.c:152: * @param device_address the usb address of the device 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); +;source-doc/base-drv/transfers.c:154: * @return usb_error USB_ERR_OK if all good, otherwise specific error code ld l,(ix+9) ld h,(ix+10) push hl @@ -461,10 +461,10 @@ _usb_data_out_transfer: pop af ld a, l ld (_result), a -;source-doc/base-drv/transfers.c:186: critical_end(); +;source-doc/base-drv/transfers.c:156: usb_error call _critical_end -;source-doc/base-drv/transfers.c:188: return result; +;source-doc/base-drv/transfers.c:158: critical_begin(); ld hl,(_result) -;source-doc/base-drv/transfers.c:189: } +;source-doc/base-drv/transfers.c:159: pop ix ret diff --git a/Source/HBIOS/ch376-native/base-drv/usb-init.c.s b/Source/HBIOS/ch376-native/base-drv/usb-init.c.s index 5ea251ce..4b6c6555 100644 --- a/Source/HBIOS/ch376-native/base-drv/usb-init.c.s +++ b/Source/HBIOS/ch376-native/base-drv/usb-init.c.s @@ -68,14 +68,14 @@ _usb_host_bus_reset: call _ch_cmd_set_usb_mode ;source-doc/base-drv/usb-init.c:16: delay_20ms(); call _delay_20ms -;source-doc/base-drv/ch376.h:163: ch_command(CH_CMD_WRITE_VAR8); +;source-doc/base-drv/ch376.h:110: #endif ld l,0x0b call _ch_command -;source-doc/base-drv/ch376.h:164: CH376_DATA_PORT = CH_VAR_RETRY_TIMES; +;source-doc/base-drv/ch376.h:111: ld a,0x25 ld bc,_CH376_DATA_PORT out (c),a -;source-doc/base-drv/ch376.h:165: CH376_DATA_PORT = retry << 6 | (number_of_retries & 0x1F); +;source-doc/base-drv/ch376.h:112: #define calc_max_packet_sizex(packet_size) (packet_size & 0x3FF) ld a,0xdf ld bc,_CH376_DATA_PORT out (c),a diff --git a/Source/HBIOS/ch376-native/keyboard/class_hid_keyboard.c.s b/Source/HBIOS/ch376-native/keyboard/class_hid_keyboard.c.s index c9530ea6..d997d258 100644 --- a/Source/HBIOS/ch376-native/keyboard/class_hid_keyboard.c.s +++ b/Source/HBIOS/ch376-native/keyboard/class_hid_keyboard.c.s @@ -49,39 +49,39 @@ _scancodes_table: ;-------------------------------------------------------- ; code ;-------------------------------------------------------- -;source-doc/keyboard/class_hid_keyboard.c:335: char scancode_to_char(const uint8_t modifier_keys, const uint8_t code) __sdcccall(1) { +;source-doc/keyboard/class_hid_keyboard.c:333: }; ; --------------------------------- ; Function scancode_to_char ; --------------------------------- _scancode_to_char: ld c, a -;source-doc/keyboard/class_hid_keyboard.c:336: if (code >= 0x80) +;source-doc/keyboard/class_hid_keyboard.c:334: ld a,l ld e,l sub 0x80 jr C,l_scancode_to_char_00102 -;source-doc/keyboard/class_hid_keyboard.c:337: return 0; +;source-doc/keyboard/class_hid_keyboard.c:335: char scancode_to_char(const uint8_t modifier_keys, const uint8_t code) __sdcccall(1) { xor a jr l_scancode_to_char_00105 l_scancode_to_char_00102: -;source-doc/keyboard/class_hid_keyboard.c:339: if (modifier_keys & (KEY_MOD_LSHIFT | KEY_MOD_RSHIFT)) +;source-doc/keyboard/class_hid_keyboard.c:337: return 0; ld a, c and 0x22 jr Z,l_scancode_to_char_00104 -;source-doc/keyboard/class_hid_keyboard.c:340: return scancodes_shift_table[code]; +;source-doc/keyboard/class_hid_keyboard.c:338: ld d,0x00 ld hl,_scancodes_shift_table add hl, de ld a, (hl) jr l_scancode_to_char_00105 l_scancode_to_char_00104: -;source-doc/keyboard/class_hid_keyboard.c:342: return scancodes_table[code]; +;source-doc/keyboard/class_hid_keyboard.c:340: return scancodes_shift_table[code]; ld d,0x00 ld hl,_scancodes_table add hl, de ld a, (hl) l_scancode_to_char_00105: -;source-doc/keyboard/class_hid_keyboard.c:343: } +;source-doc/keyboard/class_hid_keyboard.c:341: ret _scancodes_shift_table: DEFB +0x00 diff --git a/Source/HBIOS/ch376-native/keyboard/kyb-init.c.s b/Source/HBIOS/ch376-native/keyboard/kyb-init.c.s index d877b11f..7419d950 100644 --- a/Source/HBIOS/ch376-native/keyboard/kyb-init.c.s +++ b/Source/HBIOS/ch376-native/keyboard/kyb-init.c.s @@ -145,7 +145,7 @@ kyb_init_str_2: DEFB 0x0a DEFM "USB: KEYBOARD: NOT FOUND$" DEFB 0x00 -;source-doc/keyboard/kyb-init.c:48: void keyboard_buf_put(const uint8_t modifier_keys, const uint8_t key_code) { +;source-doc/keyboard/kyb-init.c:47: ; --------------------------------- ; Function keyboard_buf_put ; --------------------------------- @@ -153,24 +153,24 @@ _keyboard_buf_put: push ix ld ix,0 add ix,sp -;source-doc/keyboard/kyb-init.c:49: if (key_code >= 0x80 || key_code == 0) +;source-doc/keyboard/kyb-init.c:48: void keyboard_buf_put(const uint8_t modifier_keys, const uint8_t key_code) { ld a,(ix+5) sub 0x80 jr NC,l_keyboard_buf_put_00106 ld a,(ix+5) or a -;source-doc/keyboard/kyb-init.c:50: return; // ignore ??? +;source-doc/keyboard/kyb-init.c:49: if (key_code >= 0x80 || key_code == 0) jr Z,l_keyboard_buf_put_00106 -;source-doc/keyboard/kyb-init.c:52: uint8_t next_write_index = (write_index + 1) & KEYBOARD_BUFFER_SIZE_MASK; +;source-doc/keyboard/kyb-init.c:51: ld a,(_write_index) inc a and 0x07 ld c, a -;source-doc/keyboard/kyb-init.c:53: if (next_write_index != read_index) { // Check if buffer is not full +;source-doc/keyboard/kyb-init.c:52: uint8_t next_write_index = (write_index + 1) & KEYBOARD_BUFFER_SIZE_MASK; ld a,(_read_index) sub c jr Z,l_keyboard_buf_put_00106 -;source-doc/keyboard/kyb-init.c:54: buffer[write_index].modifier_keys = modifier_keys; +;source-doc/keyboard/kyb-init.c:53: if (next_write_index != read_index) { // Check if buffer is not full ld de,_buffer+0 ld hl,(_write_index) ld h,0x00 @@ -178,7 +178,7 @@ _keyboard_buf_put: add hl, de ld a,(ix+4) ld (hl), a -;source-doc/keyboard/kyb-init.c:55: buffer[write_index].key_code = key_code; +;source-doc/keyboard/kyb-init.c:54: buffer[write_index].modifier_keys = modifier_keys; ld hl,(_write_index) ld h,0x00 add hl, hl @@ -187,30 +187,30 @@ _keyboard_buf_put: inc de ld a,(ix+5) ld (de), a -;source-doc/keyboard/kyb-init.c:56: write_index = next_write_index; +;source-doc/keyboard/kyb-init.c:55: buffer[write_index].key_code = key_code; ld hl,_write_index ld (hl), c l_keyboard_buf_put_00106: -;source-doc/keyboard/kyb-init.c:58: } +;source-doc/keyboard/kyb-init.c:57: } pop ix ret -;source-doc/keyboard/kyb-init.c:60: uint8_t keyboard_buf_size() __sdcccall(1) { +;source-doc/keyboard/kyb-init.c:59: ; --------------------------------- ; Function keyboard_buf_size ; --------------------------------- _keyboard_buf_size: -;source-doc/keyboard/kyb-init.c:61: if (write_index >= read_index) +;source-doc/keyboard/kyb-init.c:60: uint8_t keyboard_buf_size() __sdcccall(1) { ld a,(_write_index) ld hl,_read_index sub (hl) jr C,l_keyboard_buf_size_00102 -;source-doc/keyboard/kyb-init.c:62: return write_index - read_index; +;source-doc/keyboard/kyb-init.c:61: if (write_index >= read_index) ld a,(_write_index) ld hl,_read_index sub (hl) jr l_keyboard_buf_size_00103 l_keyboard_buf_size_00102: -;source-doc/keyboard/kyb-init.c:64: return KEYBOARD_BUFFER_SIZE - read_index + write_index; +;source-doc/keyboard/kyb-init.c:63: ld hl,_read_index ld c, (hl) ld a,0x08 @@ -219,9 +219,9 @@ l_keyboard_buf_size_00102: ld c, (hl) add a, c l_keyboard_buf_size_00103: -;source-doc/keyboard/kyb-init.c:65: } +;source-doc/keyboard/kyb-init.c:64: return KEYBOARD_BUFFER_SIZE - read_index + write_index; ret -;source-doc/keyboard/kyb-init.c:67: uint32_t keyboard_buf_get_next() { +;source-doc/keyboard/kyb-init.c:66: ; --------------------------------- ; Function keyboard_buf_get_next ; --------------------------------- @@ -231,41 +231,41 @@ _keyboard_buf_get_next: add ix,sp push af push af -;source-doc/keyboard/kyb-init.c:68: if (write_index == read_index) // Check if buffer is empty +;source-doc/keyboard/kyb-init.c:67: uint32_t keyboard_buf_get_next() { ld a,(_write_index) ld hl,_read_index sub (hl) jr NZ,l_keyboard_buf_get_next_00102 -;source-doc/keyboard/kyb-init.c:69: return 255 << 8; +;source-doc/keyboard/kyb-init.c:68: if (write_index == read_index) // Check if buffer is empty ld hl,0xff00 ld e, h ld d, h jr l_keyboard_buf_get_next_00103 l_keyboard_buf_get_next_00102: -;source-doc/keyboard/kyb-init.c:71: const uint8_t modifier_key = buffer[read_index].modifier_keys; +;source-doc/keyboard/kyb-init.c:70: ld bc,_buffer+0 ld hl,(_read_index) ld h,0x00 add hl, hl add hl, bc ld b, (hl) -;source-doc/keyboard/kyb-init.c:72: const uint8_t key_code = buffer[read_index].key_code; +;source-doc/keyboard/kyb-init.c:71: const uint8_t modifier_key = buffer[read_index].modifier_keys; inc hl ld c, (hl) -;source-doc/keyboard/kyb-init.c:73: read_index = (read_index + 1) & KEYBOARD_BUFFER_SIZE_MASK; +;source-doc/keyboard/kyb-init.c:72: const uint8_t key_code = buffer[read_index].key_code; ld hl,_read_index ld a, (hl) inc a and 0x07 ld (hl), a -;source-doc/keyboard/kyb-init.c:74: const unsigned char c = scancode_to_char(modifier_key, key_code); +;source-doc/keyboard/kyb-init.c:73: read_index = (read_index + 1) & KEYBOARD_BUFFER_SIZE_MASK; push bc ld l, c ld a, b call _scancode_to_char ld e, a pop bc -;source-doc/keyboard/kyb-init.c:76: return (uint32_t)modifier_key << 24 | (uint32_t)c << 16 | key_code; +;source-doc/keyboard/kyb-init.c:75: /* D = modifier, e-> char, H = 0, L=>code */ xor a ld (ix-1),b xor a @@ -282,46 +282,46 @@ l_keyboard_buf_get_next_00102: pop hl push hl l_keyboard_buf_get_next_00103: -;source-doc/keyboard/kyb-init.c:77: } +;source-doc/keyboard/kyb-init.c:76: return (uint32_t)modifier_key << 24 | (uint32_t)c << 16 | key_code; ld sp, ix pop ix ret -;source-doc/keyboard/kyb-init.c:79: void keyboard_buf_flush() { +;source-doc/keyboard/kyb-init.c:78: ; --------------------------------- ; Function keyboard_buf_flush ; --------------------------------- _keyboard_buf_flush: -;source-doc/keyboard/kyb-init.c:80: write_index = 0; +;source-doc/keyboard/kyb-init.c:79: void keyboard_buf_flush() { ld hl,_write_index ld (hl),0x00 -;source-doc/keyboard/kyb-init.c:81: read_index = 0; +;source-doc/keyboard/kyb-init.c:80: write_index = 0; ld hl,_read_index ld (hl),0x00 -;source-doc/keyboard/kyb-init.c:82: } +;source-doc/keyboard/kyb-init.c:81: read_index = 0; ret -;source-doc/keyboard/kyb-init.c:88: void keyboard_tick(void) { +;source-doc/keyboard/kyb-init.c:87: ; --------------------------------- ; Function keyboard_tick ; --------------------------------- _keyboard_tick: -;source-doc/keyboard/kyb-init.c:89: if (is_in_critical_section()) +;source-doc/keyboard/kyb-init.c:88: void keyboard_tick(void) { ld hl,_in_critical_usb_section ld a, (hl) or a -;source-doc/keyboard/kyb-init.c:90: return; +;source-doc/keyboard/kyb-init.c:89: if (is_in_critical_section()) ret NZ -;././source-doc/base-drv//ch376.h:163: ch_command(CH_CMD_WRITE_VAR8); +;././source-doc/base-drv//ch376.h:110: #endif ld l,0x0b call _ch_command -;././source-doc/base-drv//ch376.h:164: CH376_DATA_PORT = CH_VAR_RETRY_TIMES; +;././source-doc/base-drv//ch376.h:111: ld a,0x25 ld bc,_CH376_DATA_PORT out (c),a -;././source-doc/base-drv//ch376.h:165: CH376_DATA_PORT = retry << 6 | (number_of_retries & 0x1F); +;././source-doc/base-drv//ch376.h:112: #define calc_max_packet_sizex(packet_size) (packet_size & 0x3FF) ld a,0x1f ld bc,_CH376_DATA_PORT out (c),a -;source-doc/keyboard/kyb-init.c:93: result = usbdev_dat_in_trnsfer_0((device_config *)keyboard_config, (uint8_t *)report, 8); +;source-doc/keyboard/kyb-init.c:92: ch_configure_nak_retry_disable(); ld bc,_report ld hl, (_keyboard_config) ld a,0x08 @@ -335,23 +335,23 @@ _keyboard_tick: inc sp ld a, l ld (_result), a -;././source-doc/base-drv//ch376.h:163: ch_command(CH_CMD_WRITE_VAR8); +;././source-doc/base-drv//ch376.h:110: #endif ld l,0x0b call _ch_command -;././source-doc/base-drv//ch376.h:164: CH376_DATA_PORT = CH_VAR_RETRY_TIMES; +;././source-doc/base-drv//ch376.h:111: ld a,0x25 ld bc,_CH376_DATA_PORT out (c),a -;././source-doc/base-drv//ch376.h:165: CH376_DATA_PORT = retry << 6 | (number_of_retries & 0x1F); +;././source-doc/base-drv//ch376.h:112: #define calc_max_packet_sizex(packet_size) (packet_size & 0x3FF) ld a,0xdf ld bc,_CH376_DATA_PORT out (c),a -;source-doc/keyboard/kyb-init.c:95: if (result == 0) +;source-doc/keyboard/kyb-init.c:94: ch_configure_nak_retry_3s(); ld hl,_result ld a, (hl) or a ret NZ -;source-doc/keyboard/kyb-init.c:96: keyboard_buf_put(report.bModifierKeys, report.keyCode[0]); +;source-doc/keyboard/kyb-init.c:95: if (result == 0) ld a, (_report + 2) ld hl,_report ld c, (hl) @@ -359,7 +359,7 @@ _keyboard_tick: push bc call _keyboard_buf_put pop af -;source-doc/keyboard/kyb-init.c:97: } +;source-doc/keyboard/kyb-init.c:96: keyboard_buf_put(report.bModifierKeys, report.keyCode[0]); ret _keyboard_config: DEFW +0x0000 diff --git a/Source/HBIOS/ch376-native/ufi-drv/class_ufi.c.s b/Source/HBIOS/ch376-native/ufi-drv/class_ufi.c.s index 702a6eb0..c0be3f53 100644 --- a/Source/HBIOS/ch376-native/ufi-drv/class_ufi.c.s +++ b/Source/HBIOS/ch376-native/ufi-drv/class_ufi.c.s @@ -513,7 +513,7 @@ l_ufi_read_write_sector_00105: ld sp,ix pop ix ret -;source-doc/ufi-drv/class_ufi.c:127: usb_error ufi_format(device_config *const storage_device, +;source-doc/ufi-drv/class_ufi.c:123: * HD | 93h | 1.25 MB | 77 | 2 | 8 | 1232 04D0h | 1024 0400h | ; --------------------------------- ; Function ufi_format ; --------------------------------- @@ -524,7 +524,7 @@ _ufi_format: ld hl, -26 add hl, sp ld sp, hl -;source-doc/ufi-drv/class_ufi.c:134: memset(¶meter_list, 0, sizeof(parameter_list)); +;source-doc/ufi-drv/class_ufi.c:130: const ufi_format_capacity_descriptor *const format) { ld hl,2 add hl, sp push hl @@ -537,7 +537,7 @@ l_ufi_format_00104: inc hl djnz l_ufi_format_00104 pop bc -;source-doc/ufi-drv/class_ufi.c:137: cmd = _ufi_cmd_format; +;source-doc/ufi-drv/class_ufi.c:133: ufi_format_parameter_list parameter_list; ld hl,14 add hl, sp ex de, hl @@ -546,14 +546,14 @@ l_ufi_format_00104: ld hl,__ufi_cmd_format ldir pop bc -;source-doc/ufi-drv/class_ufi.c:140: cmd.track_number = track_number; +;source-doc/ufi-drv/class_ufi.c:136: ufi_format_command cmd; ld a,(ix+7) ld (ix-10),a -;source-doc/ufi-drv/class_ufi.c:141: cmd.interleave[1] = 0; +;source-doc/ufi-drv/class_ufi.c:137: cmd = _ufi_cmd_format; ld (ix-8),0x00 -;source-doc/ufi-drv/class_ufi.c:142: cmd.parameter_list_length[1] = sizeof(parameter_list); +;source-doc/ufi-drv/class_ufi.c:138: // memcpy(&cmd, &_ufi_cmd_format, sizeof(cmd)); ld (ix-4),0x0c -;source-doc/ufi-drv/class_ufi.c:144: parameter_list.defect_list_header.side = side; +;source-doc/ufi-drv/class_ufi.c:140: cmd.track_number = track_number; ld e, c ld d, b inc de @@ -564,36 +564,36 @@ l_ufi_format_00104: and 0xfe or l ld (de), a -;source-doc/ufi-drv/class_ufi.c:145: parameter_list.defect_list_header.immediate = 0; +;source-doc/ufi-drv/class_ufi.c:141: cmd.interleave[1] = 0; ld l, e ld h, d res 1, (hl) -;source-doc/ufi-drv/class_ufi.c:146: parameter_list.defect_list_header.reserved2 = 0; +;source-doc/ufi-drv/class_ufi.c:142: cmd.parameter_list_length[1] = sizeof(parameter_list); ld l, e ld h, d ld a, (hl) and 0xf3 ld (hl), a -;source-doc/ufi-drv/class_ufi.c:147: parameter_list.defect_list_header.single_track = 1; +;source-doc/ufi-drv/class_ufi.c:143: ld l, e ld h, d set 4, (hl) -;source-doc/ufi-drv/class_ufi.c:148: parameter_list.defect_list_header.dcrt = 1; +;source-doc/ufi-drv/class_ufi.c:144: parameter_list.defect_list_header.side = side; ld l, e ld h, d set 5, (hl) -;source-doc/ufi-drv/class_ufi.c:149: parameter_list.defect_list_header.extend = 0; +;source-doc/ufi-drv/class_ufi.c:145: parameter_list.defect_list_header.immediate = 0; ld l, e ld h, d res 6, (hl) -;source-doc/ufi-drv/class_ufi.c:150: parameter_list.defect_list_header.fov = 1; +;source-doc/ufi-drv/class_ufi.c:146: parameter_list.defect_list_header.reserved2 = 0; ex de, hl set 7, (hl) -;source-doc/ufi-drv/class_ufi.c:151: parameter_list.defect_list_header.defect_list_length_msb = 0; +;source-doc/ufi-drv/class_ufi.c:147: parameter_list.defect_list_header.single_track = 1; ld (ix-22),0x00 -;source-doc/ufi-drv/class_ufi.c:152: parameter_list.defect_list_header.defect_list_length_lsb = 8; +;source-doc/ufi-drv/class_ufi.c:148: parameter_list.defect_list_header.dcrt = 1; ld (ix-21),0x08 -;source-doc/ufi-drv/class_ufi.c:153: memcpy(¶meter_list.format_descriptor, (void *)format, sizeof(ufi_format_capacity_descriptor)); +;source-doc/ufi-drv/class_ufi.c:149: parameter_list.defect_list_header.extend = 0; ld e,(ix+8) ld d,(ix+9) push bc @@ -603,7 +603,7 @@ l_ufi_format_00104: ld bc,0x0008 ldir pop bc -;source-doc/ufi-drv/class_ufi.c:155: usb_error result = usb_execute_cbi(storage_device, (uint8_t *)&cmd, true, sizeof(parameter_list), (uint8_t *)¶meter_list, +;source-doc/ufi-drv/class_ufi.c:151: parameter_list.defect_list_header.defect_list_length_msb = 0; ld hl,0 add hl, sp push hl @@ -620,12 +620,12 @@ l_ufi_format_00104: ld h,(ix+5) push hl call _usb_execute_cbi -;source-doc/ufi-drv/class_ufi.c:162: return result; -;source-doc/ufi-drv/class_ufi.c:163: } +;source-doc/ufi-drv/class_ufi.c:158: // trace_printf("ufi_format: %d, %02X %02X (len: %d)\r\n", result, sense_codes.bASC, sense_codes.bASCQ, sizeof(parameter_list)); +;source-doc/ufi-drv/class_ufi.c:159: ld sp,ix pop ix ret -;source-doc/ufi-drv/class_ufi.c:165: usb_error ufi_send_diagnostics(device_config *const storage_device) { +;source-doc/ufi-drv/class_ufi.c:161: done: ; --------------------------------- ; Function ufi_send_diagnostics ; --------------------------------- @@ -636,7 +636,7 @@ _ufi_send_diagnostics: ld hl, -12 add hl, sp ld sp, hl -;source-doc/ufi-drv/class_ufi.c:168: ufi_cmd_send_diagnostic = _ufi_cmd_send_diagnostic; +;source-doc/ufi-drv/class_ufi.c:164: ld hl,0 add hl, sp ld e,l @@ -646,7 +646,7 @@ _ufi_send_diagnostics: ld hl,__ufi_cmd_send_diagnostic ldir pop bc -;source-doc/ufi-drv/class_ufi.c:170: return usb_execute_cbi(storage_device, (uint8_t *)&ufi_cmd_send_diagnostic, true, 0, NULL, NULL); +;source-doc/ufi-drv/class_ufi.c:166: ufi_send_diagnostic_command ufi_cmd_send_diagnostic; ld hl,0x0000 push hl push hl @@ -659,11 +659,11 @@ _ufi_send_diagnostics: ld h,(ix+5) push hl call _usb_execute_cbi -;source-doc/ufi-drv/class_ufi.c:171: } +;source-doc/ufi-drv/class_ufi.c:167: ld sp,ix pop ix ret -;source-doc/ufi-drv/class_ufi.c:173: uint32_t convert_from_msb_first(const uint8_t *const buffer) { +;source-doc/ufi-drv/class_ufi.c:169: ; --------------------------------- ; Function convert_from_msb_first ; --------------------------------- @@ -673,40 +673,40 @@ _convert_from_msb_first: add ix,sp push af push af -;source-doc/ufi-drv/class_ufi.c:175: uint8_t *p_output = ((uint8_t *)&result); +;source-doc/ufi-drv/class_ufi.c:171: } ld hl,0 add hl, sp ex de, hl -;source-doc/ufi-drv/class_ufi.c:176: const uint8_t *p_input = buffer + 3; +;source-doc/ufi-drv/class_ufi.c:172: ld c,(ix+4) ld b,(ix+5) inc bc inc bc inc bc -;source-doc/ufi-drv/class_ufi.c:178: *p_output++ = *p_input--; +;source-doc/ufi-drv/class_ufi.c:174: uint32_t result; ld a, (bc) dec bc ld (de), a inc de -;source-doc/ufi-drv/class_ufi.c:179: *p_output++ = *p_input--; +;source-doc/ufi-drv/class_ufi.c:175: uint8_t *p_output = ((uint8_t *)&result); ld a, (bc) dec bc ld (de), a inc de -;source-doc/ufi-drv/class_ufi.c:180: *p_output++ = *p_input--; +;source-doc/ufi-drv/class_ufi.c:176: const uint8_t *p_input = buffer + 3; ld a, (bc) ld (de), a inc de -;source-doc/ufi-drv/class_ufi.c:181: *p_output = *p_input--; +;source-doc/ufi-drv/class_ufi.c:177: dec bc ld a, (bc) ld (de), a -;source-doc/ufi-drv/class_ufi.c:183: return result; +;source-doc/ufi-drv/class_ufi.c:179: *p_output++ = *p_input--; pop hl push hl ld e,(ix-2) ld d,(ix-1) -;source-doc/ufi-drv/class_ufi.c:184: } +;source-doc/ufi-drv/class_ufi.c:180: *p_output++ = *p_input--; ld sp, ix pop ix ret diff --git a/Source/HBIOS/ch376kyb.asm b/Source/HBIOS/ch376kyb.asm index c6a3c706..b1e917e1 100644 --- a/Source/HBIOS/ch376kyb.asm +++ b/Source/HBIOS/ch376kyb.asm @@ -3,6 +3,7 @@ ; CH376 NATIVE USB KEYBOARD DRIVER ;================================================================================================== ; +; This driver is designed to work within the TMS video driver for a CRT solution. #DEFINE DEFM .DB #DEFINE DEFB .DB @@ -61,8 +62,6 @@ CHUKB_TICK: ; we gonna need a bigger stack - EZ80_UTIL_DEBUG - LD (UKY_INT_SP),SP ; SAVE ORIGINAL STACK FRAME LD SP,UKY_INTSTK ; USE DEDICATED INT STACK FRAME IN HI MEM @@ -155,6 +154,5 @@ UKY_READ: JR NZ, UKY_READ LD C, 0 LD D, 0 - ; LD E, 'A' XOR A RET