home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / ST_USER / 1993 / USERJN93.MSA / DEVPAC2_OLDGEM_GEMINC.S < prev    next >
Text File  |  1993-04-20  |  10KB  |  433 lines

  1.  
  2. ********************
  3. * GEM INCLUDE FILE *
  4. ********************
  5.  
  6. * Source code Copyright (C) 1985 HiSoft. All rights reserved.
  7. * No part of this source may be reproduced, transmitted,
  8. * transcribed, or stored in a retrieval system, or translated
  9. * in any form or by any means without the prior written
  10. * permission of HiSoft.
  11.  
  12. * HiSoft makes no representations or warranties with respect
  13. * to the contents hereof and specifically disclaims any
  14. * implied warranties or merchantability or fitness for any
  15. * particular purpose.
  16.  
  17. * feel free to use any or all of the object code
  18.  
  19. * last changed: 21.3.88
  20.  
  21. *********************
  22. * MACRO DEFINITIONS *
  23. *********************
  24.  
  25.  
  26. * a macro to initialise a program
  27. do_start MACRO
  28.     move.l    4(a7),a5        base page
  29.     move.l    $18(a5),a6        data=in BSS segment
  30.     lea    mystack(a6),a7        my stack pointer
  31.     move.l    $c(a5),d0        text size
  32.     add.l    $14(a5),d0        +data
  33.     add.l    $1c(a5),d0        +bss
  34.     add.l    #$100,d0        +base page length
  35. * firstly we have to give back the memory not required
  36.     move.l    d0,-(a7)            length to keep
  37.     move.l    a5,-(a7)            start address
  38.     clr.w    -(a7)            filler
  39.     move.w    #$4a,-(a7)
  40.     trap #1                M_SHRINK
  41.     lea    12(a7),a7
  42.     ENDM
  43.  
  44. * a macro to call a VDI function given as a parameter
  45. vdi    macro
  46.     move.w    #\1,d0        can't be Quick as some are>127
  47.     bsr    call_vdi
  48.     endm
  49.  
  50. * a macro to call GEM function given as a parameter
  51. gem    macro
  52.     moveq    #\1,d0        can be Quick as all are<128
  53.     bsr    call_gem
  54.     endm
  55.  
  56.  
  57.  
  58. *********************************
  59. * VDI SUBROUTINES AND CONSTANTS *
  60. *********************************
  61.  
  62. * initialise the VDI parameter block
  63. initvdipars
  64.     lea    vdipar(a6),a1
  65.     lea    contrl(a6),a0
  66.     move.l    a0,(a1)+
  67.     lea    intin(a6),a0
  68.     move.l    a0,(a1)+
  69.     lea    ptsin(a6),a0
  70.     move.l    a0,(a1)+
  71.     lea    intout(a6),a0
  72.     move.l    a0,(a1)+
  73.     lea    ptsout(a6),a0
  74.     move.l    a0,(a1)+
  75.     rts
  76.  
  77. * call the vdi, with parameter in d0
  78. * all other parameters have to be set by caller
  79. call_vdi
  80.     move.w    d0,contrl(a6)        store the op-code
  81.     lea    vdipar(a6),a0
  82.     move.l    a0,d1            the parameter block
  83.     moveq    #115,d0            the function code
  84.     trap    #2
  85.     rts
  86.  
  87.  
  88. * VDI function constants
  89. V_OPENWK    equ 1        open workstation        
  90. V_CLSWK        equ 2        close workstation
  91. V_CLRWK        equ 3        clear workstation
  92. V_UPDWK        equ 4        update workstation
  93. V_ESCAPES    equ 5        various
  94. V_PLINE        equ 6        polyline
  95. V_PMARKER    equ 7        polymarker
  96. V_GTEXT        equ 8        text
  97. V_FILLAREA    equ 9        filled area
  98. V_CALLARRAY    equ 10        call array
  99. V_GDP        equ 11        bar,arc,pie,circle,ellipse,round rects, etc
  100. VST_HEIGHT    equ 12        set character height
  101. VST_ROTATION    equ 13        set character baseline vector
  102. VS_COLOR    equ 14        set colour representation
  103. VSL_TYPE    equ 15        set polyline type
  104. VSL_WIDTH    equ 16        set polyline width
  105. VSL_COLOR    equ 17        set ployline colour
  106. VSM_TYPE    equ 18        set polymarker type
  107. VSM_HEIGHT    equ 19        set polymarker height
  108. VSM_COLOR    equ 20        set ploymarker colour
  109. VST_FONT    equ 21        set text face
  110. VST_COLOR    equ 22        set text colour
  111. VSF_INTERIOR    equ 23        set fill interior style
  112. VSF_STYLE    equ 24        set fill style index
  113. VSF_COLOR    equ 25        set fill colour index
  114. VQ_COLOR    equ 26        inquire colour representation
  115. VQ_CELLARRAY    equ 27        inquire cell array
  116. VI_LOCATOR    equ 28        input locator, request/sample
  117. VI_VALUATOR    equ 29        input valuator, request/sample
  118. VI_CHOICE    equ 30        input choice, request/sample
  119. VI_STRING    equ 31        input string, request/sample
  120. VSWR_MODE    equ 32        set writing mode
  121. VSIN_MODE    equ 33        set input mode
  122.  
  123. VQL_ATTRIBUTES    equ 35    inquire polyline attributes
  124. VQM_ATTRIBUTES    equ 36    inquire plymarker attributes
  125. VQF_ATTRIBUTES    equ 37    inquire fill area attributes
  126. VQT_ATTRIBUTES    equ 38    inquire graphic text
  127. VST_ALIGNMENT    equ 39    set text alignment
  128.  
  129. V_OPNVWK    equ 100    open virtual workstation
  130. V_CLSVWK    equ 101    close virtual workstation
  131. VQ_EXTND    equ 102    extended inquire
  132. V_CONTOURFILL    equ 103    contour fill
  133. VSF_PERIMETER    equ 104    set fill perimeter
  134. V_GET_PIXEL    equ 105    get pixel
  135. VST_EFFECTS    equ 106    set text effects
  136. VST_POINT    equ 107    set character cell height
  137. VSL_ENDS    equ 108    set polyline end markers
  138. VRO_CPYFM    equ 109    copy rastor
  139. VR_TRN_FM    equ 110    transform form
  140. VSC_FORM    equ 111    set mouse form
  141. VSF_UDPAT    equ 112    set user-defined fill pattern
  142. VSL_UDSTY    equ 113    user defined line pattern
  143. VR_RECFL    equ 114    fill rectangle
  144. VQIN_MODE    equ 115    inquire input mode
  145. VQT_EXTENT    equ 116    inquire text extent
  146. VQT_WIDTH    equ 117    inquire char cell width
  147. VEX_TIMV    equ 118    exchange timer interrupt vector
  148. VST_LOAD_FONTS    equ 119    load fonts
  149. VST_UNLOAD_FONTS    equ 120    unload fonts
  150. VRT_CPYFM    equ 121    copy rastor transparent
  151. V_SHOW_C    equ 122    show cursor
  152. V_HIDE_C    equ 123    hide cursor
  153. VQ_MOUSE    equ 124    sample mouse button
  154. VEX_BUTV    equ 125    exchange button change vector
  155. VEX_MOTV    equ 126    exchange movement vector
  156. VEX_CURV    equ 127    exchange cursor change vector
  157. VQ_KEY_S    equ 128    sample keyboard state
  158. VS_CLIP        equ 129    set clipping rectangle
  159. VQT_NAME    equ 130    inquire face name and index
  160. VQT_FONT_INFO    equ 131    inquire current face information
  161.  
  162.  
  163. **********************************
  164. * GEM AES ROUTINES AND CONSTANTS *
  165. **********************************
  166.  
  167. * the AES functions
  168. APPL_INIT    equ 10
  169. APPL_READ    equ 11
  170. APPL_WRITE    equ 12
  171. APPL_FIND    equ 13
  172. APPL_TPLAY    equ 14
  173. APPL_TRECORD    equ 15
  174. APPL_EXIT    equ 19
  175. EVNT_KEYBD    equ 20
  176. EVNT_BUTTON    equ 21
  177. EVNT_MOUSE    equ 22
  178. EVNT_MESAG    equ 23
  179. EVNT_TIMER    equ 24
  180. EVNT_MULTI    equ 25
  181. EVNT_DCLICK    equ 26
  182. MENU_BAR    equ 30
  183. MENU_ICHECK    equ 31
  184. MENU_IENABLE    equ 32
  185. MENU_TNORMAL    equ 33
  186. MENU_TEXT    equ 34
  187. MENU_REGISTER    equ 35
  188. OBJC_ADD    equ 40
  189. OBJC_DELETE    equ 41
  190. OBJC_DRAW    equ 42
  191. OBJC_FIND    equ 43
  192. OBJC_OFFSET    equ 44
  193. OBJC_ORDER    equ 45
  194. OBJC_EDIT    equ 46
  195. OBJC_CHANGE    equ 47
  196. FORM_DO        equ 50
  197. FORM_DIAL    equ 51
  198. FORM_ALERT    equ 52
  199. FORM_ERROR    equ 53
  200. FORM_CENTER    equ 54
  201. GRAF_RUBBERBOX     equ 70
  202. GRAF_DRAGBOX    equ 71
  203. GRAF_MOVEBOX    equ 72
  204. GRAF_GROWBOX    equ 73
  205. GRAF_SHRINKBOX    equ 74
  206. GRAF_WATCHBOX    equ 75
  207. GRAF_SLIDEBOX    equ 76
  208. GRAF_HANDLE    equ 77
  209. GRAF_MOUSE    equ 78
  210. GRAF_MKSTATE    equ 79
  211. SCRP_READ    equ 80
  212. SCRP_WRITE    equ 81
  213. FSEL_INPUT    equ 90
  214. WIND_CREATE    equ 100
  215. WIND_OPEN    equ 101
  216. WIND_CLOSE    equ 102
  217. WIND_DELETE    equ 103
  218. WIND_GET    equ 104
  219. WIND_SET    equ 105
  220. WIND_FIND    equ 106
  221. WIND_UPDATE    equ 107
  222. WIND_CALC    equ 108
  223. RSRC_LOAD    equ 110
  224. RSRC_FREE    equ 111
  225. RSRC_GADDR    equ 112
  226. RSRC_SADDR    equ 113
  227. RSRC_OBFIX    equ 114
  228. SHEL_READ    equ 120
  229. SHEL_WRITE    equ 121
  230. SHEL_FIND    equ 124
  231. SHEL_ENVRN    equ 125
  232.  
  233.  
  234. * initialise the GEM array params[0..5]
  235. initgempars
  236.     lea params(a6),a1
  237.     lea control(a6),a0
  238.     move.l a0,(a1)+
  239.     lea global(a6),a0
  240.     clr.l 10(a0)            ap_ptree
  241.     clr.l 14(a0)
  242.     clr.l 18(a0)
  243.     clr.l 22(a0)
  244.     clr.l 26(a0)
  245.     move.l a0,(a1)+
  246.     lea int_in(a6),a0
  247.     move.l a0,(a1)+
  248.     lea int_out(a6),a0
  249.     move.l a0,(a1)+
  250.     lea addr_in(a6),a0
  251.     move.l a0,(a1)+
  252.     lea addr_out(a6),a0
  253.     move.l a0,(a1)+
  254.     rts
  255.  
  256.  
  257. * call GEM function D0.W - all elements in control[1..4] are set
  258. call_gem
  259.     move.w d0,control(a6)        store the op code
  260.     sub.w #10,d0
  261.     mulu #3,d0            multiply by 3
  262.     lea gem_ctrl_list(pc),a0
  263.     add.w d0,a0            points to the entry
  264.     moveq #0,d0
  265.     move.b (a0)+,d0
  266.     move.w d0,control+2(a6)        do control(1)
  267.     move.b (a0)+,d0
  268.     move.w d0,control+4(a6)        and control(2)
  269.     move.b (a0)+,d0
  270.     move.w d0,control+6(a6)        and control(3)
  271.     clr.w control+8(a6)        control(4)=0
  272.     cmp.w #RSRC_GADDR,control(a6)
  273.     bne.s c6is0
  274. * this is a special case which has control(4) as 1
  275.     move.w #1,control+8(a6)
  276. c6is0    lea params(a6),a0
  277.     move.l a0,d1            the pointer
  278.     move.w #200,d0            function number
  279.     trap #2
  280.     move.w int_out(a6),d0    usually a returned value
  281.     rts
  282.  
  283. * this is the list of Control parameters for the AES calls
  284. * contains control(1..3), comment is the function number
  285. * (an asterisk indicates it is not defined)
  286. gem_ctrl_list
  287.     dc.b 0,1,0    10
  288.     dc.b 2,1,1    11
  289.     dc.b 2,1,1    12
  290.     dc.b 0,1,1    13
  291.     dc.b 2,1,1    14
  292.     dc.b 1,1,1    15
  293.     dc.b 0,0,0    16*
  294.     dc.b 0,0,0    17*
  295.     dc.b 0,0,0    18*
  296.     dc.b 0,1,0    19
  297.     dc.b 0,1,0    20
  298.     dc.b 3,5,0    21
  299.     dc.b 5,5,0    22
  300.     dc.b 0,1,1    23
  301.     dc.b 2,1,0    24
  302.     dc.b 16,7,1    25
  303.     dc.b 2,1,0    26
  304.     dc.b 0,0,0    27*
  305.     dc.b 0,0,0    28*
  306.     dc.b 0,0,0    29*
  307.     dc.b 1,1,1    30
  308.     dc.b 2,1,1    31
  309.     dc.b 2,1,1    32
  310.     dc.b 2,1,1    33
  311.     dc.b 1,1,2    34
  312.     dc.b 1,1,1    35
  313.     dc.b 0,0,0    36*
  314.     dc.b 0,0,0    37*
  315.     dc.b 0,0,0    38*
  316.     dc.b 0,0,0    39*
  317.     dc.b 2,1,1    40
  318.     dc.b 1,1,1    41
  319.     dc.b 6,1,1    42
  320.     dc.b 4,1,1    43
  321.     dc.b 1,3,1    44
  322.     dc.b 2,1,1    45
  323.     dc.b 4,2,1    46
  324.     dc.b 8,1,1    47
  325.     dc.b 0,0,0    48*
  326.     dc.b 0,0,0    49*
  327.     dc.b 1,1,1    50
  328.     dc.b 9,1,0    51
  329.     dc.b 1,1,1    52
  330.     dc.b 1,1,0    53
  331.     dc.b 0,5,1    54
  332.     dc.b 0,0,0    55*
  333.     dc.b 0,0,0    56*
  334.     dc.b 0,0,0    57*
  335.     dc.b 0,0,0    58*
  336.     dc.b 0,0,0    59*
  337.     dc.b 0,0,0    60*
  338.     dc.b 0,0,0    61*
  339.     dc.b 0,0,0    62*
  340.     dc.b 0,0,0    63*
  341.     dc.b 0,0,0    64*
  342.     dc.b 0,0,0    65*
  343.     dc.b 0,0,0    66*
  344.     dc.b 0,0,0    67*
  345.     dc.b 0,0,0    68*
  346.     dc.b 0,0,0    69*
  347.     dc.b 4,3,0    70
  348.     dc.b 8,3,0    71
  349.     dc.b 6,1,0    72
  350.     dc.b 8,1,0    73
  351.     dc.b 8,1,0    74
  352.     dc.b 4,1,1    75
  353.     dc.b 3,1,1    76
  354.     dc.b 0,5,0    77
  355.     dc.b 1,1,1    78
  356.     dc.b 0,5,0    79
  357.     dc.b 0,1,1    80
  358.     dc.b 0,1,1    81
  359.     dc.b 0,0,0    82*
  360.     dc.b 0,0,0    83*
  361.     dc.b 0,0,0    84*
  362.     dc.b 0,0,0    85*
  363.     dc.b 0,0,0    86*
  364.     dc.b 0,0,0    87*
  365.     dc.b 0,0,0    88*
  366.     dc.b 0,0,0    89*
  367.     dc.b 0,2,2    90
  368.     dc.b 0,0,0    91*
  369.     dc.b 0,0,0    92*
  370.     dc.b 0,0,0    93*
  371.     dc.b 0,0,0    94*
  372.     dc.b 0,0,0    95*
  373.     dc.b 0,0,0    96*
  374.     dc.b 0,0,0    97*
  375.     dc.b 0,0,0    98*
  376.     dc.b 0,0,0    99*
  377.     dc.b 5,1,0    100
  378.     dc.b 5,1,0    101
  379.     dc.b 1,1,0    102
  380.     dc.b 1,1,0    103
  381.     dc.b 2,5,0    104
  382.     dc.b 6,1,0    105
  383.     dc.b 2,1,0    106
  384.     dc.b 1,1,0    107
  385.     dc.b 6,5,0    108
  386.     dc.b 0,0,0    109*
  387.     dc.b 0,1,1    110
  388.     dc.b 0,1,0    111
  389.     dc.b 2,1,0    112 ** Control(4)=1 **
  390.     dc.b 2,1,1    113
  391.     dc.b 1,1,1    114
  392.     dc.b 0,0,0    115
  393.     dc.b 0,0,0    116
  394.     dc.b 0,0,0    117
  395.     dc.b 0,0,0    118
  396.     dc.b 0,0,0    119
  397.     dc.b 0,1,2    120
  398.     dc.b 3,1,2    121
  399.     dc.b 0,0,0    122*
  400.     dc.b 0,0,0    123*
  401.     dc.b 0,1,1    124
  402.     dc.b 0,1,3    125
  403.  
  404.  
  405. ***************************
  406. *       WORKSPACE         *
  407. * always addressed off A6 *
  408. ***************************
  409.  
  410. * this is the array of pointers to the rest of the AES arrays
  411. params        rs.l 6
  412.      
  413. * these are the arrays for AES
  414. control        rs.w 5
  415. global        rs.b 30
  416. int_in        rs.w 16
  417. int_out        rs.w 7
  418. addr_in        rs.l 2
  419. addr_out    rs.l 1
  420.  
  421.  
  422. * these are the VDI arrays, starting with the parameter block
  423. vdipar        rs.l 5
  424.  
  425. * now the arrays themselves
  426. contrl        rs.w 12
  427. intin        rs.w 30
  428. ptsin        rs.w 30
  429. intout        rs.w 45
  430. ptsout        rs.w 12
  431.  
  432.  
  433.