blitz.bmx 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874
  1. Strict
  2. NoDebug
  3. Rem
  4. bbdoc: BASIC/BlitzMax runtime
  5. End Rem
  6. Module BRL.Blitz
  7. ModuleInfo "Version: 1.17"
  8. ModuleInfo "Author: Mark Sibly"
  9. ModuleInfo "License: zlib/libpng"
  10. ModuleInfo "Copyright: Blitz Research Ltd"
  11. ModuleInfo "Modserver: BRL"
  12. ModuleInfo "History: 1.17 Release"
  13. ModuleInfo "History: Added kludges for Lion llvm"
  14. ModuleInfo "History: Removed Nan/Inf"
  15. ModuleInfo "History: 1.16 Release"
  16. ModuleInfo "History: String.Find now converts start index <0 to 0"
  17. ModuleInfo "History: 1.15 Release"
  18. ModuleInfo "History: Changed ReadStdin so it can handle any length input"
  19. ModuleInfo "History: 1.14 Release"
  20. ModuleInfo "History: Fixed leak in WriteStdout and WriteStderr"
  21. ModuleInfo "History: 1.13 Release"
  22. ModuleInfo "History: Added LibStartUp stub"
  23. ModuleInfo "History: 1.12 Release"
  24. ModuleInfo "History: Added GCSuspend and GCResume"
  25. ModuleInfo "History: 1.11 Release"
  26. ModuleInfo "History: Added experimental dll support"
  27. ModuleInfo "History: 1.10 Release"
  28. ModuleInfo "History: Added Nan and Inf keyword docs"
  29. ModuleInfo "History: 1.09 Release"
  30. ModuleInfo "History: BCC extern CString fix"
  31. ModuleInfo "History: 1.08 Release"
  32. ModuleInfo "History: Removed printf from 'Throw'"
  33. ModuleInfo "History: 1.07 Release"
  34. ModuleInfo "History: Added AppTitle$ global var"
  35. ModuleInfo "History: 1.06 Release"
  36. ModuleInfo "History: Restored ReadData"
  37. ModuleInfo "History: 1.05 Release"
  38. ModuleInfo "History: Lotsa little tidyups"
  39. ModuleInfo "History: 1.04 Release"
  40. ModuleInfo "History: Fixed C Compiler warnings"
  41. Import "blitz_app.c"
  42. Import "blitz_types.c"
  43. Import "blitz_cclib.c"
  44. Import "blitz_memory.c"
  45. Import "blitz_module.c"
  46. Import "blitz_object.c"
  47. Import "blitz_string.c"
  48. Import "blitz_array.c"
  49. Import "blitz_handle.c"
  50. Import "blitz_debug.c"
  51. Import "blitz_incbin.c"
  52. Import "blitz_thread.c"
  53. Import "blitz_ex.c"
  54. Import "blitz_gc.c"
  55. ?Threaded
  56. Import "blitz_gc_ms.c"
  57. ?Not Threaded
  58. Import "blitz_gc_rc.c"
  59. ?
  60. ?Win32X86
  61. Import "blitz_ex.win32.x86.s"
  62. Import "blitz_gc.win32.x86.s"
  63. Import "blitz_ftoi.win32.x86.s"
  64. ?LinuxX86
  65. Import "blitz_ex.linux.x86.s"
  66. Import "blitz_gc.linux.x86.s"
  67. Import "blitz_ftoi.linux.x86.s"
  68. ?MacosX86
  69. Import "blitz_ex.macos.x86.s"
  70. Import "blitz_gc.macos.x86.s"
  71. Import "blitz_ftoi.macos.x86.s"
  72. ?MacosPPC
  73. Import "blitz_ex.macos.ppc.s"
  74. Import "blitz_gc.macos.ppc.s"
  75. ?
  76. Extern
  77. Global OnDebugStop()="bbOnDebugStop"
  78. Global OnDebugLog( message$ )="bbOnDebugLog"
  79. End Extern
  80. Type TBlitzException
  81. End Type
  82. Type TNullObjectException Extends TBlitzException
  83. Method ToString$()
  84. Return "Attempt to access field or method of Null object"
  85. End Method
  86. End Type
  87. Type TNullMethodException Extends TBlitzException
  88. Method ToString$()
  89. Return "Attempt to call abstract method"
  90. End Method
  91. End Type
  92. Type TNullFunctionException Extends TBlitzException
  93. Method ToString$()
  94. Return "Attempt to call uninitialized function pointer"
  95. End Method
  96. End Type
  97. Type TArrayBoundsException Extends TBlitzException
  98. Method ToString$()
  99. Return "Attempt to index array element beyond array length"
  100. End Method
  101. End Type
  102. Type TOutOfDataException Extends TBlitzException
  103. Method ToString$()
  104. Return "Attempt to read beyond end of data"
  105. End Method
  106. End Type
  107. Type TRuntimeException Extends TBlitzException
  108. Field error$
  109. Method ToString$()
  110. Return error
  111. End Method
  112. Function Create:TRuntimeException( error$ )
  113. Local t:TRuntimeException=New TRuntimeException
  114. t.error=error
  115. Return t
  116. End Function
  117. End Type
  118. Function NullObjectError()
  119. Throw New TNullObjectException
  120. End Function
  121. Function NullMethodError()
  122. Throw New TNullMethodException
  123. End Function
  124. Function NullFunctionError()
  125. Throw New TNullFunctionException
  126. End Function
  127. Function ArrayBoundsError()
  128. Throw New TArrayBoundsException
  129. End Function
  130. Function OutOfDataError()
  131. Throw New TOutOfDataException
  132. End Function
  133. Rem
  134. bbdoc: Generate a runtime error
  135. about: Throws a TRuntimeException.
  136. End Rem
  137. Function RuntimeError( message$ )
  138. Throw TRuntimeException.Create( message )
  139. End Function
  140. Rem
  141. bbdoc: Stop program execution and enter debugger
  142. about: If there is no debugger present, this command is ignored.
  143. end rem
  144. Function DebugStop()
  145. OnDebugStop
  146. End Function
  147. Rem
  148. bbdoc: Write a string to debug log
  149. about: If there is no debugger present, this command is ignored.
  150. end rem
  151. Function DebugLog( message$ )
  152. OnDebugLog message
  153. End Function
  154. Extern
  155. Rem
  156. bbdoc: Application directory
  157. about: The #AppDir global variable contains the fully qualified directory of the currently
  158. executing application. An application's initial current directory is also set to #AppDir
  159. when an application starts.
  160. End Rem
  161. Global AppDir$="bbAppDir"
  162. Rem
  163. bbdoc: Application file name
  164. about: The #AppFile global variable contains the fully qualified file name of the currently
  165. executing application.
  166. End Rem
  167. Global AppFile$="bbAppFile"
  168. Rem
  169. bbdoc: Application title
  170. about: The #AppTitle global variable is used by various commands when a
  171. default application title is required - for example, when opening simple
  172. windows or requesters.<br>
  173. <br>
  174. Initially, #AppTitle is set the value "BlitzMax Application". However, you may change
  175. #AppTitle at any time with a simple assignment.
  176. End Rem
  177. Global AppTitle$="bbAppTitle"
  178. Rem
  179. bbdoc: Arguments passed to the application at startup
  180. about: The #AppArgs global array contains the command line parameters sent to an application
  181. when it was started. The first element of #AppArgs always contains the name of the
  182. application. However, the format of the name may change depending on how the application
  183. was launched. Use #AppDir or #AppFile for consistent information about the applications name
  184. or directory.
  185. End Rem
  186. Global AppArgs$[]="bbAppArgs"
  187. Rem
  188. bbdoc: Directory from which application was launched
  189. about: The #LaunchDir global variable contains the current directory at the time the
  190. application was launched. This is mostly of use to command line tools which may need to
  191. access the 'shell' current directory as opposed to the application directory.
  192. End Rem
  193. Global LaunchDir$="bbLaunchDir"
  194. Rem
  195. bbdoc: Add a function to be called when the program ends
  196. about: #OnEnd allows you to specify a function to be called when the program ends. OnEnd functions are called
  197. in the reverse order to that in which they were added.
  198. end rem
  199. Function OnEnd( fun() )="bbOnEnd"
  200. Rem
  201. bbdoc: Read a string from stdin
  202. returns: A string read from stdin. The newline terminator, if any, is included in the returned string.
  203. end rem
  204. Function ReadStdin$()="bbReadStdin"
  205. Rem
  206. bbdoc: Write a string to stdout
  207. about: Writes @str to stdout and flushes stdout.
  208. end rem
  209. Function WriteStdout( str$ )="bbWriteStdout"
  210. Rem
  211. bbdoc: Write a string to stderr
  212. about: Writes @str to stderr and flushes stderr.
  213. end rem
  214. Function WriteStderr( str$ )="bbWriteStderr"
  215. Rem
  216. bbdoc: Wait for a given number of milliseconds
  217. about:
  218. #Delay suspends program execution for at least @millis milliseconds.<br>
  219. <br>
  220. A millisecond is one thousandth of a second.
  221. End Rem
  222. Function Delay( millis )="bbDelay"
  223. Rem
  224. bbdoc: Get millisecond counter
  225. returns: Milliseconds since computer turned on.
  226. about:
  227. #MilliSecs returns the number of milliseconds elapsed since the computer
  228. was turned on.<br>
  229. <br>
  230. A millisecond is one thousandth of a second.
  231. End Rem
  232. Function MilliSecs()="bbMilliSecs"
  233. Rem
  234. bbdoc: Allocate memory
  235. returns: A new block of memory @size bytes long
  236. End Rem
  237. Function MemAlloc:Byte Ptr( size )="bbMemAlloc"
  238. Rem
  239. bbdoc: Free allocated memory
  240. about: The memory specified by @mem must have been previously allocated by #MemAlloc or #MemExtend.
  241. End Rem
  242. Function MemFree( mem:Byte Ptr )="bbMemFree"
  243. Rem
  244. bbdoc: Extend a block of memory
  245. returns: A new block of memory @new_size bytes long
  246. about: An existing block of memory specified by @mem and @size is copied into a new block
  247. of memory @new_size bytes long. The existing block is released and the new block is returned.
  248. end rem
  249. Function MemExtend:Byte Ptr( mem:Byte Ptr,size,new_size )="bbMemExtend"
  250. Rem
  251. bbdoc: Clear a block of memory to 0
  252. end rem
  253. Function MemClear( mem:Byte Ptr,size )="bbMemClear"
  254. Rem
  255. bbdoc: Copy a non-overlapping block of memory
  256. end rem
  257. Function MemCopy( dst:Byte Ptr,src:Byte Ptr,size )="bbMemCopy"
  258. Rem
  259. bbdoc: Copy a potentially overlapping block of memory
  260. end rem
  261. Function MemMove( dst:Byte Ptr,src:Byte Ptr,size )="bbMemMove"
  262. Rem
  263. bbdoc: Set garbage collector mode
  264. about:
  265. @mode can be one of the following:<br>
  266. 1 : automatic GC - memory will be automatically garbage collected<br>
  267. 2 : manual GC - no memory will be collected until a call to GCCollect is made<br>
  268. <br>
  269. The default GC mode is automatic GC.
  270. End Rem
  271. Function GCSetMode( mode )="bbGCSetMode"
  272. Rem
  273. bbdoc: Suspend garbage collector
  274. about:
  275. #GCSuspend temporarily suspends the garbage collector. No garbage
  276. collection will be performed following a call to #GCSuspend.<br>
  277. <br>
  278. Use #GCResume to resume the garbage collector. Note that #GCSuspend
  279. and #GCResume 'nest', meaning that each call to #GCSuspend must be
  280. matched by a call to #GCResume.
  281. End Rem
  282. Function GCSuspend()="bbGCSuspend"
  283. Rem
  284. bbdoc: Resume garbage collector
  285. about:
  286. #GCResume resumes garbage collection following a call to #GCSuspend.<br>
  287. <br>
  288. See #GCSuspend for more details.
  289. End Rem
  290. Function GCResume()="bbGCResume"
  291. Rem
  292. bbdoc: Run garbage collector
  293. returns: The amount of memory, in bytes, collected.
  294. about:
  295. This function will have no effect if the garbage collector has been
  296. suspended due to #GCSuspend.
  297. End Rem
  298. Function GCCollect()="bbGCCollect"
  299. Rem
  300. bbdoc: Memory allocated by application
  301. returns: The amount of memory, in bytes, currently allocated by the application
  302. about:
  303. This function only returns 'managed memory'. This includes all objects, strings and
  304. arrays in use by the application.
  305. End Rem
  306. Function GCMemAlloced()="bbGCMemAlloced"
  307. Rem
  308. bbdoc: Private: do not use
  309. End Rem
  310. Function GCEnter()="bbGCEnter"
  311. Rem
  312. bbdoc: Private: do not use
  313. End Rem
  314. Function GCLeave()="bbGCLeave"
  315. Rem
  316. bbdoc: Convert object to integer handle
  317. returns: An integer object handle
  318. about:
  319. After converting an object to an integer handle, you must later
  320. release it using the #Release command.
  321. End Rem
  322. Function HandleFromObject( obj:Object )="bbHandleFromObject"
  323. Rem
  324. bbdoc: Convert integer handle to object
  325. returns: The object associated with the integer handle
  326. End Rem
  327. Function HandleToObject:Object( handle )="bbHandleToObject"
  328. End Extern
  329. 'BlitzMax keyword definitions
  330. Rem
  331. bbdoc: Set strict mode
  332. about:
  333. See the <a href=../../../../doc/bmxlang/compatibility.html>BlitzMax Language Reference</a> for more information on Strict mode programming.
  334. keyword: "Strict"
  335. End Rem
  336. Rem
  337. bbdoc: Set SuperStrict mode
  338. keyword: "SuperStrict"
  339. End Rem
  340. Rem
  341. bbdoc: End program execution
  342. keyword: "End"
  343. End Rem
  344. Rem
  345. bbdoc: Begin a remark block
  346. keyword: "Rem"
  347. End Rem
  348. Rem
  349. bbdoc: End a remark block
  350. keyword: "EndRem"
  351. End Rem
  352. Rem
  353. bbdoc: Constant integer of value 1
  354. keyword: "True"
  355. End Rem
  356. Rem
  357. bbdoc: Constant integer of value 0
  358. keyword: "False"
  359. End Rem
  360. Rem
  361. bbdoc: Constant Pi value: 3.1415926535897932384626433832795
  362. keyword: "Pi"
  363. End Rem
  364. Rem
  365. bbdoc: Get Default Null value
  366. keyword: "Null"
  367. End Rem
  368. Rem
  369. bbdoc: Unsigned 8 bit integer Type
  370. keyword: "Byte"
  371. End Rem
  372. Rem
  373. bbdoc: Unsigned 16 bit integer Type
  374. keyword: "Short"
  375. End Rem
  376. Rem
  377. bbdoc: Signed 32 bit integer Type
  378. keyword: "Int"
  379. End Rem
  380. Rem
  381. bbdoc: Signed 64 bit integer Type
  382. keyword: "Long"
  383. End Rem
  384. Rem
  385. bbdoc: 32 bit Floating point Type
  386. keyword: "Float"
  387. End Rem
  388. Rem
  389. bbdoc: 64 bit floating point Type
  390. keyword: "Double"
  391. End Rem
  392. Rem
  393. bbdoc: String Type
  394. keyword: "String"
  395. End Rem
  396. Rem
  397. bbdoc: Object Type
  398. keyword: "Object"
  399. End Rem
  400. Rem
  401. bbdoc: Composite Type specifier for 'by reference' types
  402. keyword: "Var"
  403. End Rem
  404. Rem
  405. bbdoc: Composite Type specifier for pointer types
  406. keyword: "Ptr"
  407. End Rem
  408. Rem
  409. bbdoc: Begin a conditional block.
  410. keyword: "If"
  411. End Rem
  412. Rem
  413. bbdoc: Optional separator between the condition and associated code in an If statement.
  414. keyword: "Then"
  415. End Rem
  416. Rem
  417. bbdoc: Else provides the ability For an If Then construct to execute a second block of code when the If condition is False.
  418. keyword: "Else"
  419. End Rem
  420. Rem
  421. bbdoc: ElseIf provides the ability to test and execute a section of code if the initial condition failed.
  422. keyword: "ElseIf"
  423. End Rem
  424. Rem
  425. bbdoc: Marks the End of an If Then block.
  426. keyword: "EndIf"
  427. End Rem
  428. Rem
  429. bbdoc: Marks the start of a loop that uses an iterator to execute a section of code repeatedly.
  430. keyword: "For"
  431. End Rem
  432. Rem
  433. bbdoc: Followed by a constant which is used to calculate when to exit a For..Next loop.
  434. keyword: "To"
  435. End Rem
  436. Rem
  437. bbdoc: Specifies an optional constant that is used to increment the For iterator.
  438. keyword: "Step"
  439. End Rem
  440. Rem
  441. bbdoc: End a For block
  442. keyword: "Next"
  443. End Rem
  444. Rem
  445. bbdoc: Iterate through an array or collection
  446. keyword: "EachIn"
  447. End Rem
  448. Rem
  449. bbdoc: Execute a block of code While a condition is True
  450. keyword: "While"
  451. End Rem
  452. Rem
  453. bbdoc: End a While block
  454. keyword: "Wend"
  455. End Rem
  456. Rem
  457. bbdoc: End a While block
  458. keyword: "EndWhile"
  459. End Rem
  460. Rem
  461. bbdoc: Execute a block of code Until a termination condition is met, or Forever
  462. keyword: "Repeat"
  463. End Rem
  464. Rem
  465. bbdoc: Conditionally continue a Repeat block
  466. keyword: "Until"
  467. End Rem
  468. Rem
  469. bbdoc: Continue a Repeat block Forever
  470. keyword: "Forever"
  471. End Rem
  472. Rem
  473. bbdoc: Begin a Select block
  474. keyword: "Select"
  475. End Rem
  476. Rem
  477. bbdoc: End a Select block
  478. keyword: "EndSelect"
  479. End Rem
  480. Rem
  481. bbdoc: Conditional code inside a Select block
  482. keyword: "Case"
  483. End Rem
  484. Rem
  485. bbdoc: Default code inside a Select block
  486. keyword: "Default"
  487. End Rem
  488. Rem
  489. bbdoc: Exit enclosing loop
  490. keyword: "Exit"
  491. End Rem
  492. Rem
  493. bbdoc: Continue execution of enclosing loop
  494. keyword: "Continue"
  495. End Rem
  496. Rem
  497. bbdoc: Declare a constant
  498. keyword: "Const"
  499. End Rem
  500. Rem
  501. bbdoc: Declare a Local variable
  502. keyword: "Local"
  503. End Rem
  504. Rem
  505. bbdoc: Declare a Global variable
  506. keyword: "Global"
  507. End Rem
  508. Rem
  509. bbdoc: Declare a Field variable
  510. keyword: "Field"
  511. End Rem
  512. Rem
  513. bbdoc: Begin a Function declaration
  514. keyword: "Function"
  515. End Rem
  516. Rem
  517. bbdoc: End a Function declaration
  518. keyword: "EndFunction"
  519. End Rem
  520. Rem
  521. bbdoc: Return from a Function
  522. keyword: "Return"
  523. End Rem
  524. Rem
  525. bbdoc: Begin a user defined Type declaration
  526. keyword: "Type"
  527. End Rem
  528. Rem
  529. bbdoc: End a user defined Type declaration
  530. keyword: "EndType"
  531. End Rem
  532. Rem
  533. bbdoc: Specify user defined Type supertype
  534. keyword: "Extends"
  535. End Rem
  536. Rem
  537. bbdoc: Begin a Method declaration
  538. keyword: "Method"
  539. End Rem
  540. Rem
  541. bbdoc: End a Method declaration
  542. keyword: "EndMethod"
  543. End Rem
  544. Rem
  545. bbdoc: Denote a Type or Method as Abstract
  546. keyword: "Abstract"
  547. End Rem
  548. Rem
  549. bbdoc: Denote a Type or Method as Final
  550. keyword: "Final"
  551. End Rem
  552. Rem
  553. bbdoc: Create an instance of a user defined Type
  554. keyword: "New"
  555. End Rem
  556. Rem
  557. bbdoc: Reference to this Method's Object instance
  558. keyword: "Self"
  559. End Rem
  560. Rem
  561. bbdoc: Reference to the Super Type Object instance
  562. keyword: "Super"
  563. End Rem
  564. Rem
  565. bbdoc: Reserved for future expansion
  566. keyword: "Delete"
  567. End Rem
  568. Rem
  569. bbdoc: Release an integer Object handle
  570. keyword: "Release"
  571. End Rem
  572. Rem
  573. bbdoc: Public makes a Constant, Global variable or Function accessible from outside the current source file (Default)
  574. keyword: "Public"
  575. End Rem
  576. Rem
  577. bbdoc: Private makes a Constant, Global variable or Function only accessible from within the current source file
  578. keyword: "Private"
  579. End Rem
  580. Rem
  581. bbdoc: Extern marks the beginning of an external list of Function declarations
  582. keyword: "Extern"
  583. End Rem
  584. Rem
  585. bbdoc: EndExtern marks the End of an Extern section
  586. keyword: "EndExtern"
  587. End Rem
  588. Rem
  589. bbdoc: Declare Module scope and identifier
  590. about:
  591. See the <a href=../../../../doc/bmxlang/modules.html>BlitzMax Language Reference</a> for more information on BlitzMax Modules.
  592. keyword: "Module"
  593. End Rem
  594. Rem
  595. bbdoc: Define Module properties
  596. keyword: "ModuleInfo"
  597. End Rem
  598. Rem
  599. bbdoc: Embed a data file
  600. keyword: "Incbin"
  601. End Rem
  602. Rem
  603. bbdoc: Get start address of embedded data file
  604. keyword: "IncbinPtr"
  605. End Rem
  606. Rem
  607. bbdoc: Get length of embedded data file
  608. keyword: "IncbinLen"
  609. End Rem
  610. Rem
  611. bbdoc: Include effectively 'inserts' the specified file into the file being compiled.
  612. keyword: "Include"
  613. End Rem
  614. Rem
  615. bbdoc: Framework builds the BlitzMax application with only the Module specified rather than all modules installed.
  616. keyword: "Framework"
  617. End Rem
  618. Rem
  619. bbdoc: Import declarations from a Module or source file
  620. keyword: "Import"
  621. End Rem
  622. Rem
  623. bbdoc: Throw a RuntimeError if a condition is False
  624. keyword: "Assert"
  625. End Rem
  626. Rem
  627. bbdoc: Transfer program flow to specified label
  628. keyword: "Goto"
  629. End Rem
  630. Rem
  631. bbdoc: Begin declaration of a Try block
  632. keyword: "Try"
  633. End Rem
  634. Rem
  635. bbdoc: End declaration of a Try block
  636. keyword: "EndTry"
  637. End Rem
  638. Rem
  639. bbdoc: Catch an exception Object in a Try block
  640. keyword: "Catch"
  641. End Rem
  642. Rem
  643. bbdoc: Throw an exception Object to the enclosing Try block
  644. keyword: "Throw"
  645. End Rem
  646. Rem
  647. bbdoc: Define class BASIC style data
  648. keyword: "DefData"
  649. End Rem
  650. Rem
  651. bbdoc: Read classic BASIC style data
  652. keyword: "ReadData"
  653. End Rem
  654. Rem
  655. bbdoc: Restore classic BASIC style data
  656. keyword: "RestoreData"
  657. End Rem
  658. Rem
  659. bbdoc: Conditional 'And' binary operator
  660. keyword: "And"
  661. End Rem
  662. Rem
  663. bbdoc: Conditional 'Or' binary operator
  664. keyword: "Or"
  665. End Rem
  666. Rem
  667. bbdoc: Conditional 'Not' binary operator
  668. keyword: "Not"
  669. End Rem
  670. Rem
  671. bbdoc: Bitwise 'Shift left' binary operator
  672. keyword: "Shl"
  673. End Rem
  674. Rem
  675. bbdoc: Bitwise 'Shift right' binary operator
  676. keyword: "Shr"
  677. End Rem
  678. Rem
  679. bbdoc: Bitwise 'Shift arithmetic right' binary operator
  680. keyword: "Sar"
  681. End Rem
  682. Rem
  683. bbdoc: Number of characters in a String or elements in an array
  684. keyword: "Len"
  685. End Rem
  686. Rem
  687. bbdoc: Numeric 'absolute value' unary operator
  688. keyword: "Abs"
  689. End Rem
  690. Rem
  691. bbdoc: Numeric 'modulus' or 'remainder' binary operator
  692. keyword: "Mod"
  693. End Rem
  694. Rem
  695. bbdoc: Numeric 'sign' unary operator
  696. keyword: "Sgn"
  697. End Rem
  698. Rem
  699. bbdoc: Numeric 'minimum' builtin function
  700. returns: The lesser of the two numeric arguments
  701. keyword: "Min"
  702. End Rem
  703. Rem
  704. bbdoc: Numeric 'maximum' builtin function
  705. returns: The larger of the two numeric arguments
  706. keyword: "Max"
  707. End Rem
  708. Rem
  709. bbdoc: Find the address of a variable
  710. keyword: "Varptr"
  711. End Rem
  712. Rem
  713. bbdoc: Size, in bytes, occupied by a variable, string, array or object
  714. keyword: "SizeOf"
  715. End Rem
  716. Rem
  717. bbdoc: Get character value of the first character of a string
  718. keyword: "Asc"
  719. End Rem
  720. Rem
  721. bbdoc: Create a string of length 1 with a character code
  722. keyword: "Chr"
  723. End Rem