HC08 Full Chip Simulation
Configuration Procedure
316
Microcontrollers Debugger Manual
ldhx #8
SAVE_SETUP:
lda {UE0D0-1},x ; save data to array
sta {Setup_packet-1},x ; Setup_packet holds info
dbnzx SAVE_SETUP
lda bmReqType ; if request type is standard
and #$60 ; then go handle standard request
bne SETUP_STALL ; otherwise, force stall
STANDARD:
lda bRequest ; get request type
cbeqa #GET_DESC,GET_DESCR ; if getting descriptors then
; ready the next IN packets for
; the descriptor information
bra SETUP_STALL ; otherwise, force stall
GET_DESCR:
jsr GETDESC_PROC ; packet received was GET_DESCRIPTOR
bra SETUP_EXIT ; go exit
SETUP_STALL:
jsr FORCE_STALL ; error, force stall on endpoint 0
SETUP_EXIT:
lda UEP0CSR ; setup endpoint 0 for more packets
and #$fc
sta UEP0CSR
bclr 5,USBSR ; clear setup flags
rts
****************************************************************
* IN_PROC - This procedure handles the IN packets that come *
* into the USB peripheral through endpoint 0. *
****************************************************************
IN_PROC:
lda control ; is this IN packet for data stage
cmp #GET_DESC ; of GET_DESCRIPTOR?
bne IN_PROC2
ldhx #0 ; clear index into data buffer
sthx buffptr
IN_SEND_DATA:
ldhx descptr ; get pointer to descriptor
lda 0,x ; get descriptor byte
aix #1
sthx descptr ; save pointer to descriptor
ldhx buffptr ; get index to data buffer
sta UE0D0,x ; place byte in buffer
aix #1