From WikiTI
Jump to: navigation, search

Version 0.12

 Fixed bug in ReadDescriptor which crashed on errors when reading string descriptors
 Fixed bug in DOS_fileWrite which incorrectly resized some files when writing
 Fixed bug in DOS_renameFileEntry involving off-by-one LBA problem
 Interrupt now signals to SendControlData (and anything else that waits on port 82) that port 82 reported
  success.  This fixes a bug with control requests that timed out if the device did not respond immediately.
 Added driver to control Vernier Easy and Go! products, in particular Go/EasyTemp
 DOS_fileWrite should be faster
 Improved MSD driver support
 Added pump entry points to allow use of usb8x without interrupts
 Added caching code
 Experimental FAT12/FAT32 MSD code added and is conditional
 Individual drivers can be compiled out via settings
 Hub code now works.  AutoSetup will pass through to the first non-hub device it finds on the bus.
 Entry Points Added:
  Asm - VernierVersion - Get version and RAM requirements of vernier driver
  Asm - EasyTempInit - Initialize driver and Go/EasyTemp device
  Asm - VernierSendCmd - Send a command block to a vernier device
  Asm - VernierQuickCmd - Send a simple command to a vernier device
  Asm - VernierGetMeas - Get the latest measurement returned by vernier device
  Asm - VernierToDegree - Convert voltage to degree
  Asm - DOS_updateAttributes - update "last modified" date/time and other attributes
  Asm - PumpOn - Turns on pump (disables usb hook stuff)
  Asm - PumpOff - Turns off pump (enables usb hook stuff)
  Asm - Pump - Pump (emulates interrupt.  call in your main loop)
  Asm - CacheOn - Turn on MSD caching
  Asm - CacheOff - Turn off MSD caching
  Asm - msdDetect - Mass storage version of ionDetect to search for and load 83P/8XP levels from specified directory
  BASIC - USBInit - initializes and supplies power to USB port (useful for power-only devices like USB lights)

Version 0.11

 Logging support is disabled by default
 Removed USBInfo and demos
 Callback is now driver-wide instead of a per-pipe .  This means SetupInPipe no longer takes callback as input
 Converted remaining routines to restore interrupts to original state instead of di/ei
 Added keyboard, silverlink, and gamepad drivers
 Removed lots of old code that wasn't being used anymore
 Mouse (and kbd) driver can now passthrough callbacks to user program
 DISAVE/EIRESTORE now compile time option because it was (maybe?) causing trouble
 MSD callback saves/restores ix
 Restructured interrupt to allow for logging
 Added compile time option to turn on/off logging for individual log entry types
 Added assertion macros/compile-time option
 Added compile time option for assertion-checking IM2 interrupt
 Entry points can now have IX inputs
 DriverInit checks base code version for 2.30+
 Driver routines now kill host device if driver init fails
Entry Points Added:
 Asm - KBDInit - Initialize keyboard driver
 Asm - KBDGetKey - Get keypress from keyboard
 Asm - KBDGetMods - Get modifier/lock key status
 Asm - KBDCheckDirect - Check current keyboard matrix status
 Asm - SilverInit - Initialize silverlink
 Asm - SilverSend - Send data on silverlink
 Asm - SetCallBack - Sets the callback address
 Asm - PadInit - Initialize gamepad driver
 Asm - PadSetup - Get a key mapping
 Asm - PadStart - Start passing pad information to the callback function
 Asm - GetErrorCode - Get the current error code
 Asm - SendControlDataOut - Send a control command that includes outbound data stage
Known bugs:
 Interrupts may be getting disabled at some point.  Use ei in mousegetkey and kbdgetkey loops.
 AutoSetup may leave device in various states of initialization on error instead of killing it.
 Some drivers don't seem to work as well (at all?) on boot code 1.00
To Do:
 Add Silver BASIC entry points
 Add option to KBDInit to set up something (cursor hook?) to implement key repeat

Version 0.10

 Input list to BASIC library no longer required to be 7 elements long 
 KillUSB BASIC entry point now disables driver as well killing the device
 ExecLib now returns error via list rather than system error on non-existant entry point
 BASIC entry points now require 42 bytes of free RAM to execute
Entry Points Added:
 BASIC - GetClass
 BASIC - Version
 BASIC - MSDInit - Initializes mass storage driver
 BASIC - MSD_ImportVariable - Imports *.8x* file from specified directory 
 BASIC - MSD_ExportVariable - Exports variable in RAM/Flash to specified directory as *.8x* file
 Asm - KBDVersion - Returns version/memory needed for kbd driver
 MSD - MSDVersion - Returns major/minor version and memory requirements of mass storage driver
 MSD - MSD_Initialize - Initializes mass storage device
 MSD - UFI_Initialize - Initializes mass storage device for sector read/write operations
 MSD - UFI_Read - Reads one sector of LBA address into sector buffer
 MSD - UFI_Write - Writes one sector of data from sector buffer to LBA address
 MSD - FAT_Initialize - Initializes mass storage device for FAT16 file system operations
 MSD - FAT_lookupPath - Sees if a file in specified folder exists
 MSD - DOS_openFile - Open file in specified folder for reading/writing 
 MSD - DOS_fileSeek - Adjusts seek pointer in specified file handle
 MSD - DOS_fileRead - Reads bytes from a file at current seek pointer
 MSD - DOS_fileWrite - Writes bytes to a file at current seek pointer
 MSD - DOS_createFile - Creates new, empty file in specified directory
 MSD - DOS_createDirectory - Creates new, empty directory in specified directory
 MSD - DOS_deleteFileEntry - Deletes file or folder
 MSD - DOS_countFilesInDir - Returns number of file/folder entries in specified directory
 MSD - DOS_getNextFile - Gets next file in list from a specified directory
 MSD - FAT_getStartingCluster - Gets starting cluster of specified directory
 MSD - MSD_ImportVariable - Imports *.8x* file from specified directory
 MSD - MSD_ExportVariable - Exports variable in RAM/Flash to specified directory as *.8x* file
 MSD - DOS_getFileSize - Gets file size from specified directory entry
 MSD - DOS_getDirEntry - Gets directory entry for specified file/directory

Version 0.09

 Changed descriptor equates and added more for other descriptor types
 Added logging and log viewer
 Added code to load HID report descriptor
 Added SendDataPart entry point.  Hopefuly temporarily
 Added hub related stuff:
  SetAddress now sets next available address instead of constant address
  Added SetHubFeature and ClearHubFeature calls
  Added SetHubPortFeature and ClearHubPortFeature calls
  Added GetHubStatus and GetHubPortStatus calls
  Added appropriate desc and log equates
 Added prelim hub demo code (doesn't work)
 Added prelim calc-calc code (doesn't work)
 Sporadic crashes on exit from app.  Cause?
 GetPipeInfo can now return both pipeIn and pipeOut
 MSD demo now autodetects correct output pipe
 Added FindPipe entry point to return the address of a pipe based on characterisitics
 DriverInit now returns error if OS version isn't high enough
 Added a LogCustom entry point to allow apps to make entries in the log file
Bugs fixed:
 Fixed bug with logging (otir replacement crashed on odd sizes)
 Devices with I and O endpoints at same addr should work
 Minor fix to U_CALL system (allows multipage apps)
 Added errDemo and errFindPipe
 Added pipeBitIn and pipeBitOut equates
 Renamed usbInt and usbBulk to pipeInt and pipeBulk
 Created usb8xtsm.inc include file in TASM compatible syntax
Known bugs:
 Interrupts are getting disabled at some point.  Requires ei in mousegetkey loop.
 USBInfo interface has some bugs.

Version 0.08

 Graphlink code now checks to make sure a graphlink is connected
 Fixed a bug in GetIDs
 Any call using ReadDescriptor (e.g. GetIDs and GetClass) will now work after AutoSetup
  however, don't use any of these calls inside of an interrupt.
 Added preliminary mouse driver
 Added di/ei to SendControlData as well (so don't use in int)
 Reworked menu scheme because there's flash test code now.
 SendControlData now takes argument for how much data to recieve in response
 Callback routine can now be passed cbStall or cbNak
 Fixed stupid bug in SendData
 Exposed WaitTimerB entry point
 Added GetPipeInfo entry point and test code to info section
 Lowered mouse movement threshold to fifteen ticks/pixel

Version 0.07

 Changed appname to "USB8X" from "USBDRV8X" because of TIOS bugs
 Added BASIC interface through OpenLib and ExecLib
 Prettied the graphlink demo a little bit
 Fixed crashing problem on port 82 and 91 errors
 Created KillDriver call, and took that functionality out of HostKill
 Fixed some random bugs
 Tried adding back in the routine to kill host before init if necessary
  and took it back out again.  *sigh*
 Added about screen

Version 0.06

 Added conditional code to port 3A check because it wasn't working on
  certain calculators (boot 1.00?).
 Changed appname to USB8X
 Added entry point for ReqData
 Minimum OS version 2.30

Version 0.05

 Added OTG descriptor information
 Added AutoSetup.  Works for mouse and graphlink at least.
 Added error reporting to routines
 Initial public release

Version 0.04

 Transitioned to USB hook for interrupt data handling
 Added lots of important code
 Added silverlink demo

Version 0.03

 Removed unneccessary stuff
 Fixed endpoint descriptor interval display
 Created entry point table and accessor

Version 0.02

 Added display template for HID descriptor
 Got mouse cursor demo working
 Mouse mapped to kbdScanCode demo working

Version 0.01

 Port Logging and Log viewing works
 Port view now unimplimented
 USB initialization and read/display of descriptors works
 USB device configuration works

Version 0.00

Port monitor functionality converted to ZDS form