Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.66 KB | None | 0 0
  1. usbPipe0 EQU 0000h
  2. usbPipe1 EQU 0100h
  3. usbPipe2 EQU 0200h
  4. usbPipe3 EQU 0300h
  5.  
  6. pipeBulk EQU 20h
  7. pipeInt EQU 30h
  8.  
  9. usbPacket8 EQU 0100h
  10. usbPacket16 EQU 0200h
  11. usbPacket32 EQU 0400h
  12. usbPacket64 EQU 0800h
  13.  
  14. pipeIn EQU 1
  15. pipeOut EQU 2
  16.  
  17. pipeBitIn EQU 0
  18. pipeBitOut EQU 1
  19.  
  20.  
  21.  
  22. cbNewData EQU 0
  23. cbStall EQU 1
  24. cbNak EQU 2
  25.  
  26. uGetVersion EQU 0
  27. uDriverInit EQU 1
  28. uIsDeviceConnected EQU 2
  29. uHostInit EQU 3
  30. uHostKill EQU 4
  31. uReadDescriptor EQU 5
  32. uGetIDs EQU 6
  33. uGetClass EQU 7
  34. uConfigureDevice EQU 8
  35. uSetupOutPipe EQU 9
  36. uSetupInPipe EQU 10
  37. uFindDescriptor EQU 11
  38. uSendData EQU 12
  39. uAutoSetup EQU 13
  40. uSendControlData EQU 14
  41. uReqData EQU 15
  42. uDriverKill EQU 16
  43. uMouseInit EQU 17
  44. uMouseGetKey EQU 18
  45. uWaitTimerB EQU 19
  46. uPipeInfo EQU 20
  47. uSetupLog EQU 21
  48. uSendDataPart EQU 22
  49. uFindPipe EQU 23
  50. uStopLog EQU 24
  51. uLogCustom EQU 25
  52. uKBDVersion EQU 26
  53. uMSDVersion EQU 27
  54. uMSD_Initialize EQU 28
  55. uUFI_Initialize EQU 29
  56. uUFI_Read EQU 30
  57. uUFI_Write EQU 31
  58. uFAT_Initialize EQU 32
  59. uFAT_lookupPath EQU 33
  60. uDOS_openFile EQU 34
  61. uDOS_fileSeek EQU 35
  62. uDOS_fileRead EQU 36
  63. uDOS_fileWrite EQU 37
  64. uDOS_createFile EQU 38
  65. uDOS_createDirectory EQU 39
  66. uDOS_deleteFileEntry EQU 40
  67. uDOS_countFilesInDir EQU 41
  68. uDOS_getNextFile EQU 42
  69. uFAT_getStartingCluster EQU 43
  70. uMSD_ImportVariable EQU 44
  71. uMSD_ExportVariable EQU 45
  72. uDOS_renameFileEntry EQU 46
  73. uFAT_nameConvertTo11 EQU 47
  74. uFAT_nameConvertFrom11 EQU 48
  75. uFAT_findFileInCluster EQU 49
  76. uDOS_getFileSize EQU 50
  77. uDOS_getDirEntry EQU 51
  78. uKBDInit EQU 52
  79. uKBDGetKey EQU 53
  80. uKBDGetMods EQU 54
  81. uKBDCheckDirect EQU 55
  82. uSilverInit EQU 56
  83. uSilverSend EQU 57
  84. uSetCallBack EQU 58
  85. uPadInit EQU 59
  86. uPadSetup EQU 60
  87. uPadStart EQU 61
  88. uGetErrorCode EQU 62
  89. uPadVersion EQU 63
  90. uInternalInfo EQU 64
  91. uSendControlDataOut EQU 65
  92. uVernierVersion EQU 66
  93. uVernierInit EQU 67
  94. uVernierSendCmd EQU 68
  95. uVernierQuickCmd EQU 69
  96. uVernierGetMeas EQU 70
  97. uVernierToDegree EQU 71
  98. uDOS_updateAttributes EQU 72
  99. uPumpOn EQU 73
  100. uPumpOff EQU 74
  101. uPump EQU 75
  102. uMSD_cacheOn EQU 76
  103. uMSD_cacheOff EQU 77
  104. umsdDetect EQU 78
  105.  
  106. USBDriverEntryPoint EQU 404Ch
  107.  
  108.  
  109.  
  110.  
  111. MSDBOTState EQU 0 ;1 - bulk-only transport state (0 - nothing, 1 - getting data, 2 - CSW)
  112. MSDLBA EQU MSDBOTState+1 ;4 - LBA address for read/write routines
  113. MSDPartStart EQU MSDLBA+4 ;4 - start of FAT16 partition
  114. MSDBPS EQU MSDPartStart+4 ;2 - bytes per sector (typically 512)
  115. MSDDataInAddr EQU MSDBPS+2 ;2 - address of incoming/outgoing data
  116. MSDDataInExpected EQU MSDDataInAddr+2 ;2 - data expected to be received/sent
  117. MSDSPC EQU MSDDataInExpected+2 ;1 - sectors per cluster (typically 2, 4, and so on)
  118. MSDFATSectors EQU MSDSPC+1 ;2 - number of sectors per FAT
  119. MSDRootDirSectors EQU MSDFATSectors+2 ;2 - number of root directory sectors (something like 32)
  120. MSDFirstDataSector EQU MSDRootDirSectors+2 ;4 - first data sector
  121. MSDFirstRootDirSecNum EQU MSDFirstDataSector+4 ;2 - first sector of root
  122. MSDFATStart EQU MSDFirstRootDirSecNum+2;2 - first sector of first FAT
  123. MSDOutPipe EQU MSDFATStart+2 ;1 - bulk out pipe
  124. MSDInPipe EQU MSDOutPipe+1 ;1 - bulk in pipe
  125. MSDFAT_sector EQU MSDInPipe+1 ;2 - temporary storage for FAT_getNextCluster output
  126. MSDDescBuf EQU MSDFAT_sector+2 ;128 - buffer for descriptors
  127. MSDBulkBuf EQU MSDDescBuf+128 ;31 - incoming data buffer
  128. MSDPacketData EQU MSDBulkBuf+31 ;64 - buffer to build data packets
  129.  
  130. mouseRight EQU 1
  131. mouseLeft EQU 2
  132. mouseUp EQU 4
  133. mouseDown EQU 8
  134.  
  135. mouseBitRight EQU 0
  136. mouseBitLeft EQU 1
  137. mouseBitUp EQU 2
  138. mouseBitDown EQU 3
  139.  
  140. errPort82 EQU 1
  141. errPort91Bit2 EQU 2 ;Stall
  142. errPort91Bit4 EQU 3
  143. errPort4C EQU 4
  144. errPort4D EQU 5
  145. errPort3A EQU 6
  146. errPort81 EQU 7
  147. errPort8C EQU 8
  148. errPort8F EQU 9
  149. errEPIndex EQU 10
  150. errEPGetDes EQU 11
  151. errNoDevice EQU 12
  152. errFindDescriptor EQU 13
  153. errBadClass EQU 14
  154. errTimeout EQU 15
  155. errBadID EQU 16
  156. errReadDescriptor EQU 17
  157. errInit EQU 18
  158. errAutoSetup EQU 19
  159. errDemo EQU 20
  160. errFindPipe EQU 21
  161. errStub EQU 22
  162. errGetMaxPacketSize EQU 23
  163. errSetAddress EQU 24
  164. errMSDSendCmd EQU 25 ;Problem sending bulk-only in/out commands
  165. errMSDLargeSect EQU 26 ;Bytes-per-sector is larger than 512 (not supported)
  166. errMSDNoParts EQU 27 ;No FAT16 primary partitions were found
  167. errMSDNoMoreMemory EQU 28 ;Function failed because no more memory available (this is a bad thing, delete incomplete file/directories)
  168. errMSDInvalidPartition EQU 29 ;Partition is invalid (does not contain 0AA55h)
  169. errMSDNotFile EQU 30 ;Path is a directory or volume label, not file
  170. errMSDNotValidPath EQU 31 ;Path is not in any way valid :)
  171. errMSDCorruptFile EQU 32 ;File is corrupted or otherwise not as expected
  172. errMSDNotFound EQU 33 ;File/directory was not found
  173. errMSDDuplicateFound EQU 34 ;Duplicate calculator variable was found and was not overwritten
  174. errMSDNotEnoughMem EQU 35 ;Not enough memory to create new calculator variable
  175. errMSDAlreadyExists EQU 36 ;*.8x* of same name already exists
  176. errMSDStrNotFound EQU 37 ;String variable from BASIC OpenLib/ExecLib function not found
  177. errMSDVarEmpty EQU 38 ;Variable was empty and transfer was not completed (this is bad, delete incomplete file)
  178. errMSDNoParts32 EQU 39 ;FAT32 partitions were found, but none were FAT16 (just a friendly message)
  179. errNoData EQU 40
  180. errVersion EQU 41
  181. errBadCmd EQU 42
  182. errFeatureDisabled EQU 43
  183. errMSDFailedCmd EQU 44
  184. errMSDCmdTimeout EQU 45
  185. errMSDCmdRefused EQU 46
  186.  
  187. descDevice EQU 1
  188. descConfig EQU 2
  189. descString EQU 3
  190. descInterface EQU 4
  191. descEndpoint EQU 5
  192. descDQ EQU 6
  193. descOSC EQU 7
  194. descIP EQU 8
  195. descOnTheGo EQU 9
  196. descHID EQU 21h
  197. descReport EQU 22h
  198. descHub EQU 29h
  199.  
  200. cacheFlagRAM EQU 0
  201.  
  202. kbdFlagNoLocks EQU 0
  203. kbdFlagCapsLock EQU 1
  204. kbdFlagNumLock EQU 2
  205. kbdFlagScrollLock EQU 3
  206.  
  207. kbdLCtrlBit EQU 0
  208. kbdLShiftBit EQU 1
  209. kbdLAltBit EQU 2
  210. kbdLGUIBit EQU 3
  211. kbdRCtrlBit EQU 4
  212. kbdRShiftBit EQU 5
  213. kbdRAltBit EQU 6
  214. kbdRGUIBit EQU 7
  215.  
  216. kbdLCtrl EQU 1
  217. kbdLShift EQU 2
  218. kbdLAlt EQU 4
  219. kbdLGUI EQU 8
  220. kbdRCtrl EQU 16
  221. kbdRShift EQU 32
  222. kbdRAlt EQU 64
  223. kbdRGUI EQU 128
  224.  
  225. kbdK1 EQU 1Eh
  226. kbdK2 EQU 1Fh
  227. kbdK3 EQU 20h
  228. kbdK4 EQU 21h
  229. kbdK5 EQU 22h
  230. kbdK6 EQU 23h
  231. kbdK7 EQU 24h
  232. kbdK8 EQU 25h
  233. kbdK9 EQU 26h
  234. kbdK0 EQU 27h
  235.  
  236. kbdKBackQuote EQU 35h ;` ~
  237. kbdKMinus EQU 2Dh ;- _
  238. kbdKEqu EQU 2Eh ;= +
  239. kbdKBackSpace EQU 2Ah
  240. kbdKEsc EQU 29h
  241. kbdKTab EQU 2Bh
  242. kbdKCapsLock EQU 39h
  243. kbdKLBrack EQU 2Fh
  244. kbdKRBrack EQU 30h
  245. kbdKBackSlash EQU 31h
  246. kbdKSemicolon EQU 33h
  247. kbdKApostrophe EQU 34h
  248. kbdKEnter EQU 28h
  249. kbdKComma EQU 36h
  250. kbdKPeriod EQU 37h
  251. kbdKSlash EQU 38h
  252. kbdKSpace EQU 2Ch
  253.  
  254. kbdKA EQU 4
  255. kbdKB EQU 5
  256. kbdKC EQU 6
  257. kbdKD EQU 7
  258. kbdKE EQU 8
  259. kbdKF EQU 9
  260. kbdKG EQU 0Ah
  261. kbdKH EQU 0Bh
  262. kbdKI EQU 0Ch
  263. kbdKJ EQU 0Dh
  264. kbdKK EQU 0Eh
  265. kbdKL EQU 0Fh
  266. kbdKM EQU 10h
  267. kbdKN EQU 11h
  268. kbdKO EQU 12h
  269. kbdKP EQU 13h
  270. kbdKQ EQU 14h
  271. kbdKR EQU 15h
  272. kbdKS EQU 16h
  273. kbdKT EQU 17h
  274. kbdKU EQU 18h
  275. kbdKV EQU 19h
  276. kbdKW EQU 1Ah
  277. kbdKX EQU 1Bh
  278. kbdKY EQU 1Ch
  279. kbdKZ EQU 1Dh
  280.  
  281. kbdKF1 EQU 3Ah
  282. kbdKF2 EQU 3Bh
  283. kbdKF3 EQU 3Ch
  284. kbdKF4 EQU 3Dh
  285. kbdKF5 EQU 3Eh
  286. kbdKF6 EQU 3Fh
  287. kbdKF7 EQU 40h
  288. kbdKF8 EQU 41h
  289. kbdKF9 EQU 42h
  290. kbdKF10 EQU 43h
  291. kbdKF11 EQU 44h
  292. kbdKF12 EQU 45h
  293.  
  294. kbdKRight EQU 4Fh
  295. kbdKLeft EQU 50h
  296. kbdKDown EQU 51h
  297. kbdKUp EQU 52h
  298.  
  299. kbdKSysRq EQU 46h
  300. kbdKScrollLock EQU 47h
  301. kbdKBreak EQU 48h
  302. kbdKInsert EQU 49h
  303. kbdKHome EQU 4Ah
  304. kbdKPageUp EQU 4Bh
  305. kbdKDelete EQU 4Ch
  306. kbdKEnd EQU 4Dh
  307. kbdKPageDown EQU 4Eh
  308.  
  309. kbdKNumLock EQU 53h
  310. kbdKNSlash EQU 54h
  311. kbdKNStar EQU 55h
  312. kbdKNMinus EQU 56h
  313. kbdKNPlus EQU 57h
  314. kbdKNEnter EQU 58h
  315. kbdKN1 EQU 59h
  316. kbdKN2 EQU 5Ah
  317. kbdKN3 EQU 5Bh
  318. kbdKN4 EQU 5Ch
  319. kbdKN5 EQU 5Dh
  320. kbdKN6 EQU 5Eh
  321. kbdKN7 EQU 5Fh
  322. kbdKN8 EQU 60h
  323. kbdKN9 EQU 61h
  324. kbdKN0 EQU 62h
  325. kbdKNPeriod EQU 63h
  326.  
  327. U_CALL macro label
  328. IFNDEF USBDriverCall
  329. EXTERN USBDriverCall
  330. ENDIF
  331. IF "u&label"="uMouseInit"
  332. ld ix,USBDriverCall+offCallBack
  333. ENDIF
  334.  
  335. IF "u&label"="uPadInit"
  336. ld ix,USBDriverCall+offCallBack
  337. ENDIF
  338. IF "u&label"="uSilverInit"
  339. ld ix,USBDriverCall+offCallBack
  340. ENDIF
  341. IF "u&label"="uVernierInit"
  342. ld ix,USBDriverCall+offCallBack
  343. ENDIF
  344. IF "u&label"="uKBDInit"
  345. ld ix,USBDriverCall+offCallBack
  346. ENDIF
  347. IF "u&label"="uAutoSetup"
  348. ld de,USBDriverCall+offCallBack
  349. ENDIF
  350. ld a,u&label
  351. call USBDriverCall
  352. .endm
  353.  
  354.  
  355.  
  356.  
  357. U_CALL_INIT macro label
  358. IFNDEF USBDriverCall
  359. warning "U_CALL_INIT not in same namespace as USBDriverCall"
  360. EXTERN USBDriverCall
  361. ENDIF
  362. ld hl,uuAppName
  363. rst 20h
  364. B_CALL FindApp
  365. jr c,uuDone
  366. ld de,USBDriverCall
  367. ld hl,uuDriverCode
  368. ld bc,uuDriverSize
  369. ldir
  370. ld (USBDriverCall+uuMod1 + 1),a
  371. in a,(6)
  372. ld (USBDriverCall+uuMod3 +1),a
  373. jr uuDone
  374. uuAppName:
  375. db AppObj,"USBDRV8X",0
  376. uuDriverCode:
  377. push af ;1
  378. in a,(6) ;3
  379. ld (USBDriverCall+uuMod2 +1),a ;6
  380. call USBDriverCall+uuCall1 ;9
  381. pop af ;10
  382. call USBDriverEntryPoint ;13
  383. push af ;14
  384. uuMod2 EQU $ - uuDriverCode
  385. ld a,0 ;16
  386. out (6),a ;18
  387. pop af ;19
  388. ret ;20
  389. uuCallBack:
  390. uuMod3 EQU $-uuDriverCode
  391. ld a,0 ;22
  392. out (6),a ;24
  393. call label ;27
  394. uuCall1 EQU $-uuDriverCode
  395. uuMod1 EQU $-uuDriverCode
  396. ld a,0 ;29
  397. out (6),a ;31
  398. ret ;32
  399. uuDriverSize EQU $ - uuDriverCode
  400. uuDone:
  401.  
  402.  
  403. .endm
  404.  
  405. offCallBack EQU 20
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement