;Equates Var MACRO first, second segment MemVars &first: ds second segment Main ENDMAC USBFlags EQU asm_Flag1 interruptsEnabled EQU 0 useOSCalls EQU 1 newDeviceConnected EQU 2 controlRequestBuffer EQU 9C29h DEFAULT_MAX_PACKET_SIZE0 EQU 40h inputBuffer EQU 9C31h logPage EQU tempSwapArea logAddress EQU logPage+1 logDataPage EQU logAddress+2 logDataAddress EQU logDataPage+1 deviceDesc EQU logDataAddress+2 configDesc EQU deviceDesc+2 bMaxPacketSize0 EQU configDesc+2 prevHookBlock EQU bMaxPacketSize0+1 nextAddress EQU prevHookBlock+6 logViewPage EQU nextAddress+1 logViewAddress EQU logViewPage+1 pipeConfiguration EQU logViewAddress+2 ;16 bytes ;Events eventHandlers EQU pipeConfiguration+16 ;table of addresses for event handlers bTotalNumEvents EQU 2 evDeviceConnected EQU 1 evDeviceDisconnected EQU 2 deviceTable EQU symTable+1 ;Device information bDeviceInformationSize EQU 1+1+16 ;bFunctionAddress ;bMaxPacketSize0 ;16 bytes for the pipe each endpoint is mapped to LOG_PAGE EQU 83h LOG_ADDRESS EQU 0A000h INTERRUPTMACRO_TYPE EQU 0 ;0 means disable/enable if necessary, 1 means always disable/enable LOGGING_ENABLED EQU 1 ;0 means disabled, 1 means enabled DISAVE MACRO IF INTERRUPTMACRO_TYPE=0 ld (83EBh),a ld a,i push af di ld a,(83EBh) ELSEIF INTERRUPTMACRO_TYPE=1 di ENDIF ENDMAC EIRESTORE MACRO IF INTERRUPTMACRO_TYPE=0 push af push hl ld hl,4 add hl,sp bit 2,(hl) jr z,$eir ei $eir: pop hl pop af inc sp inc sp ELSEIF INTERRUPTMACRO_TYPE=1 ei ENDIF ENDMAC LOG MACRO first, second IF LOGGING_ENABLED = 1 IFNDEF DoLog EXTERN DoLog ENDIF push bc ifneq "_&second", "_" ld c,second else ld c,0 endif ld b,log&first call DoLog pop bc ENDIF ENDMAC logGetMaxPacketSize EQU 1 logData EQU 2 logQuit EQU 3 logDataEnd EQU 4 logSetupLog EQU 5 logDataStart EQU 6 logLogDone EQU 7 logCustom EQU 8 logInterrupt EQU 9 logGetHubStatus EQU 10