home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / language / sozobon1 / gemfast.sh < prev    next >
Encoding:
Text File  |  1993-10-23  |  8.3 KB  |  288 lines

  1.  
  2. ;*========================================================================
  3. ;*
  4. ;* AESFAST GEM bindings.
  5. ;* Copyright (c) Nov 1988, by Ian Lepore.
  6. ;* See full copyright statement in file AES@NOTE.S for details.
  7. ;*
  8. ;*========================================================================
  9.  
  10. ;*************************************************************************
  11. ;*
  12. ;* GEMFAST.SH - 
  13. ;*  Assembler header file for asm programs using GEMFAST bindings.
  14. ;*  (Just like GEMFAST.H is for C).
  15. ;*************************************************************************
  16.          
  17. ;-------------------------------------------------------------------------
  18. ; Constants...
  19. ;-------------------------------------------------------------------------
  20.  
  21. G_BOX        = 20                         ; Object types
  22. G_TEXT       = 21
  23. G_BOXTEXT    = 22
  24. G_IMAGE      = 23
  25. G_USERDEF    = 24
  26. G_IBOX       = 25
  27. G_BUTTON     = 26
  28. G_BOXCHAR    = 27
  29. G_STRING     = 28
  30. G_FTEXT      = 29
  31. G_FBOXTEXT   = 30
  32. G_ICON       = 31
  33. G_TITLE      = 32
  34.  
  35. NONE         = $0000
  36. SELECTABLE   = $0001                 ; Object flags 
  37. DEFAULT      = $0002                 ; (defined as masks for AND/OR)
  38. EXIT         = $0004
  39. EDITABLE     = $0008
  40. RBUTTON      = $0010
  41. LASTOB       = $0020
  42. TOUCHEXIT    = $0040
  43. HIDETREE     = $0080
  44.  
  45. NORMAL       = $0000
  46. SELECTED     = $0001                 ; Object states
  47. CROSSED      = $0002                 ; (defined as masks for AND/OR)
  48. CHECKED      = $0004
  49. DISABLED     = $0008
  50. OUTLINED     = $0010
  51. SHADOWED     = $0020
  52.  
  53. BSELECTABLE  = 0 ; $0001               ; Object flags 
  54. BDEFAULT     = 1 ; $0002               ; (defined as bit numbers for BTST)
  55. BEXIT        = 2 ; $0004
  56. BEDITABLE    = 3 ; $0008
  57. BRBUTTON     = 4 ; $0010
  58. BLASTOB      = 5 ; $0020
  59. BTOUCHEXIT   = 6 ; $0040
  60. BHIDETREE    = 7 ; $0080
  61.  
  62. BSELECTED    = 0 ; $0001               ; Object states
  63. BCROSSED     = 1 ; $0002               ; (defined as bit numbers for BTST)
  64. BCHECKED     = 2 ; $0004
  65. BDISABLED    = 3 ; $0008
  66. BOUTLINED    = 4 ; $0010
  67. BSHADOWED    = 5 ; $0020
  68.                                         ; form_dial commands...
  69. FMD_START    = 0
  70. FMD_GROW     = 1
  71. FMD_SHRINK   = 2
  72. FMD_FINISH   = 3
  73.                                         ; objc_draw stuff...
  74. MAX_DEPTH    = 8
  75. R_TREE       = 0
  76.                                         ; evnt_multi events...
  77. MU_KEYBD     = $0001                   ; (defined as masks for AND/OR)
  78. MU_BUTTON    = $0002
  79. MU_M1        = $0004
  80. MU_M2        = $0008
  81. MU_MESAG     = $0010
  82. MU_TIMER     = $0020
  83.                                         ; keyboard states 
  84. K_RSHIFT     = $0001                   ; (defined as masks for AND/OR)
  85. K_LSHIFT     = $0002
  86. K_CTRL       = $0004
  87. K_ALT        = $0008
  88.                                         ; event message values 
  89. MN_SELECTED  = 10
  90. WM_REDRAW    = 20
  91. WM_TOPPED    = 21
  92. WM_CLOSED    = 22
  93. WM_FULLED    = 23
  94. WM_ARROWED   = 24
  95. WM_HSLID     = 25
  96. WM_VSLID     = 26
  97. WM_SIZED     = 27
  98. WM_MOVED     = 28
  99. WM_NEWTOP    = 29
  100. AC_OPEN      = 40
  101. AC_CLOSE     = 41
  102.  
  103.                                         ; Window Attributes 
  104. NAME         = $0001                    ; (defined as masks for AND/OR)
  105. CLOSER       = $0002
  106. FULLER       = $0004
  107. MOVER        = $0008
  108. INFO         = $0010
  109. SIZER        = $0020
  110. UPARROW      = $0040
  111. DNARROW      = $0080
  112. VSLIDE       = $0100
  113. LFARROW      = $0200
  114. RTARROW      = $0400
  115. HSLIDE       = $0800
  116.                                         ; wind_create flags 
  117. WC_BORDER    = 0                        
  118. WC_WORK      = 1
  119.                                         ; wind_get flags 
  120. WF_KIND      = 1
  121. WF_NAME      = 2
  122. WF_INFO      = 3
  123. WF_WORKXYWH  = 4
  124. WF_CURRXYWH  = 5
  125. WF_PREVXYWH  = 6
  126. WF_FULLXYWH  = 7
  127. WF_HSLIDE    = 8
  128. WF_VSLIDE    = 9
  129. WF_TOP       = 10
  130. WF_FIRSTXYWH = 11
  131. WF_NEXTXYWH  = 12
  132. WF_RESVD     = 13
  133. WF_NEWDESK   = 14
  134. WF_HSLSIZE   = 15
  135. WF_VSLSIZE   = 16
  136. WF_SCREEN    = 17
  137.                                         ; wind_update flags 
  138. END_UPDATE  = 0
  139. BEG_UPDATE  = 1
  140. END_MCTRL   = 2
  141. BEG_MCTRL   = 3
  142.                                         ; graf_mouse mouse types
  143. ARROW       = 0
  144. BEE         = 2
  145. TEXT_CRSR   = 1
  146. HOURGLASS   = 2
  147. POINT_HAND  = 3
  148. FLAT_HAND   = 4
  149. THIN_CROSS  = 5
  150. THICK_CROSS = 6
  151. OUTLN_CROSS = 7
  152. USER_DEF    = 255
  153. M_OFF       = 256
  154. M_ON        = 257
  155.                                         ; inside fill patterns  
  156. IP_HOLLOW   = 0
  157. IP_1PATT    = 1
  158. IP_2PATT    = 2
  159. IP_3PATT    = 3
  160. IP_4PATT    = 4
  161. IP_5PATT    = 5
  162. IP_6PATT    = 6
  163. IP_SOLID    = 7
  164.                                         ; normal graphics drawing modes 
  165. MD_REPLACE  = 1
  166. MD_TRANS    = 2
  167. MD_XOR      = 3
  168. MD_ERASE    = 4
  169.                                         ; bit blt rules 
  170. ALL_WHITE   = 0
  171. S_AND_D     = 1
  172. S_AND_NOTD  = 2
  173. S_ONLY      = 3
  174. NOTS_AND_D  = 4
  175. D_ONLY      = 5
  176. S_XOR_D     = 6
  177. S_OR_D      = 7
  178. NOT_SORD    = 8
  179. NOT_SXORD   = 9
  180. D_INVERT    = 10
  181. NOT_D       = 10
  182. S_OR_NOTD   = 11
  183. NOT_S       = 12
  184. NOTS_OR_D   = 13
  185. NOT_SANDD   = 14
  186. ALL_BLACK   = 15
  187.  
  188.  
  189.                                         ; editable text field definitions 
  190. EDSTART     = 0
  191. EDINIT      = 1
  192. EDCHAR      = 2
  193. EDEND       = 3
  194.                                         ; editable text justification 
  195. TE_LEFT     = 0
  196. TE_RIGHT    = 1
  197. TE_CNTR     = 2
  198.  
  199. ;-------------------------------------------------------------------------
  200. ; Define some commonly-used structures as offsets.
  201. ;-------------------------------------------------------------------------
  202.  
  203.           .abs                          ; GRECT - graphics rectangle.
  204. g_x:      ds.w 1
  205. g_y:      ds.w 1
  206. g_w:      ds.w 1
  207. g_h:      ds.w 1
  208.  
  209.           .abs                          ; VRECT - VDI rectangle.
  210. v_x1:     ds.w 1
  211. v_y1:     ds.w 1
  212. v_x2:     ds.w 1
  213. v_y2:     ds.w 1
  214.  
  215.           .abs                          ; OBJECT
  216. ob_next:  ds.w 1
  217. ob_head:  ds.w 1
  218. ob_tail:  ds.w 1
  219. ob_type:  ds.w 1
  220. ob_flags: ds.w 1
  221. ob_state: ds.w 1
  222. ob_spec:  ds.l 1
  223. ob_x:     ds.w 1
  224. ob_y:     ds.w 1
  225. ob_w:     ds.w 1
  226. ob_h:     ds.w 1
  227. OBJ_SIZ   =         *
  228.  
  229.              .abs                       ; TEDINFO
  230. te_ptext:    ds.l      1                ; ptr to text             
  231. te_ptmplt:   ds.l      1                ; ptr to template                   
  232. te_pvalid:   ds.l      1                ; ptr to validation chrs. 
  233. te_font:     ds.w      1                ; font                              
  234. te_junk1:    ds.w      1                ; junk word               
  235. te_just:     ds.w      1                ; justification                     
  236. te_color:    ds.w      1                ; color information word  
  237. te_junk2:    ds.w      1                ; junk word               
  238. te_thickness:ds.w      1                ; border thickness        
  239. te_txtlen:   ds.w      1                ; length of text string   
  240. te_tmplen:   ds.w      1                ; length of template string
  241. TEDINF_SIZ   =    *
  242.  
  243. ;-------------------------------------------------------------------------
  244. ; Macros...
  245. ; Caveat:
  246. ;  This stuff is not currently supported as part of the GEMFAST bindings
  247. ;  system, but I have code which relies on these macros being in this
  248. ;  file, so I'm leaving it in.  For the curious, these macros are the
  249. ;  bare beginnings of a system to make it easier to program AES stuff
  250. ;  in assembler.  The current macros are involved with building resource
  251. ;  trees in source code.  Puzzling out how to use them is left as an
  252. ;  exercise for the reader <snicker>.
  253. ;            - Ian
  254. ;-------------------------------------------------------------------------
  255.  
  256. .macro    Teddef ptext,ptmpl,pvalid,font,rsvd1,just,color,rsvd2,thick,textlen,tmpllen
  257.           dc.l      \ptext,\ptmpl,\pvalid
  258.           dc.w      \font,\rsvd1,\just,\color
  259.           dc.w      \rsvd2,\thick,\textlen,\tmpllen
  260. .endm
  261.  
  262. .macro    Treedef datatype
  263.           .\datatype
  264. TR$OBJ$IDX   set 0
  265. TR$OBJ$INIT  set (^^streq \datatype,"text") | (^^streq \datatype,"data") 
  266. .endm
  267.  
  268. .macro    Objdef objidx,next,head,tail,type,flags,state,spec,x,y,w,h
  269.           .iif \?objidx, \objidx = TR$OBJ$IDX
  270.           .if  TR$OBJ$INIT
  271.           dc.w      \next,\head,\tail
  272.           dc.w      \type,\flags,\state
  273.           dc.l      \spec
  274.           dc.w      \x,\y,\w,\h
  275.           .else
  276.           ds.b      OBJ_SIZ
  277.           .endif
  278. TR$OBJ$IDX set TR$OBJ$IDX+1
  279. .endm
  280.  
  281. .macro    Objptr tree,objidx,areg
  282.           lea    [OBJ_SIZ * \objidx]+\tree,\areg
  283. .endm
  284.  
  285.  
  286.           .text
  287.           
  288.