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 >
Wrap
Text File
|
1993-04-20
|
10KB
|
433 lines
********************
* GEM INCLUDE FILE *
********************
* Source code Copyright (C) 1985 HiSoft. All rights reserved.
* No part of this source may be reproduced, transmitted,
* transcribed, or stored in a retrieval system, or translated
* in any form or by any means without the prior written
* permission of HiSoft.
* HiSoft makes no representations or warranties with respect
* to the contents hereof and specifically disclaims any
* implied warranties or merchantability or fitness for any
* particular purpose.
* feel free to use any or all of the object code
* last changed: 21.3.88
*********************
* MACRO DEFINITIONS *
*********************
* a macro to initialise a program
do_start MACRO
move.l 4(a7),a5 base page
move.l $18(a5),a6 data=in BSS segment
lea mystack(a6),a7 my stack pointer
move.l $c(a5),d0 text size
add.l $14(a5),d0 +data
add.l $1c(a5),d0 +bss
add.l #$100,d0 +base page length
* firstly we have to give back the memory not required
move.l d0,-(a7) length to keep
move.l a5,-(a7) start address
clr.w -(a7) filler
move.w #$4a,-(a7)
trap #1 M_SHRINK
lea 12(a7),a7
ENDM
* a macro to call a VDI function given as a parameter
vdi macro
move.w #\1,d0 can't be Quick as some are>127
bsr call_vdi
endm
* a macro to call GEM function given as a parameter
gem macro
moveq #\1,d0 can be Quick as all are<128
bsr call_gem
endm
*********************************
* VDI SUBROUTINES AND CONSTANTS *
*********************************
* initialise the VDI parameter block
initvdipars
lea vdipar(a6),a1
lea contrl(a6),a0
move.l a0,(a1)+
lea intin(a6),a0
move.l a0,(a1)+
lea ptsin(a6),a0
move.l a0,(a1)+
lea intout(a6),a0
move.l a0,(a1)+
lea ptsout(a6),a0
move.l a0,(a1)+
rts
* call the vdi, with parameter in d0
* all other parameters have to be set by caller
call_vdi
move.w d0,contrl(a6) store the op-code
lea vdipar(a6),a0
move.l a0,d1 the parameter block
moveq #115,d0 the function code
trap #2
rts
* VDI function constants
V_OPENWK equ 1 open workstation
V_CLSWK equ 2 close workstation
V_CLRWK equ 3 clear workstation
V_UPDWK equ 4 update workstation
V_ESCAPES equ 5 various
V_PLINE equ 6 polyline
V_PMARKER equ 7 polymarker
V_GTEXT equ 8 text
V_FILLAREA equ 9 filled area
V_CALLARRAY equ 10 call array
V_GDP equ 11 bar,arc,pie,circle,ellipse,round rects, etc
VST_HEIGHT equ 12 set character height
VST_ROTATION equ 13 set character baseline vector
VS_COLOR equ 14 set colour representation
VSL_TYPE equ 15 set polyline type
VSL_WIDTH equ 16 set polyline width
VSL_COLOR equ 17 set ployline colour
VSM_TYPE equ 18 set polymarker type
VSM_HEIGHT equ 19 set polymarker height
VSM_COLOR equ 20 set ploymarker colour
VST_FONT equ 21 set text face
VST_COLOR equ 22 set text colour
VSF_INTERIOR equ 23 set fill interior style
VSF_STYLE equ 24 set fill style index
VSF_COLOR equ 25 set fill colour index
VQ_COLOR equ 26 inquire colour representation
VQ_CELLARRAY equ 27 inquire cell array
VI_LOCATOR equ 28 input locator, request/sample
VI_VALUATOR equ 29 input valuator, request/sample
VI_CHOICE equ 30 input choice, request/sample
VI_STRING equ 31 input string, request/sample
VSWR_MODE equ 32 set writing mode
VSIN_MODE equ 33 set input mode
VQL_ATTRIBUTES equ 35 inquire polyline attributes
VQM_ATTRIBUTES equ 36 inquire plymarker attributes
VQF_ATTRIBUTES equ 37 inquire fill area attributes
VQT_ATTRIBUTES equ 38 inquire graphic text
VST_ALIGNMENT equ 39 set text alignment
V_OPNVWK equ 100 open virtual workstation
V_CLSVWK equ 101 close virtual workstation
VQ_EXTND equ 102 extended inquire
V_CONTOURFILL equ 103 contour fill
VSF_PERIMETER equ 104 set fill perimeter
V_GET_PIXEL equ 105 get pixel
VST_EFFECTS equ 106 set text effects
VST_POINT equ 107 set character cell height
VSL_ENDS equ 108 set polyline end markers
VRO_CPYFM equ 109 copy rastor
VR_TRN_FM equ 110 transform form
VSC_FORM equ 111 set mouse form
VSF_UDPAT equ 112 set user-defined fill pattern
VSL_UDSTY equ 113 user defined line pattern
VR_RECFL equ 114 fill rectangle
VQIN_MODE equ 115 inquire input mode
VQT_EXTENT equ 116 inquire text extent
VQT_WIDTH equ 117 inquire char cell width
VEX_TIMV equ 118 exchange timer interrupt vector
VST_LOAD_FONTS equ 119 load fonts
VST_UNLOAD_FONTS equ 120 unload fonts
VRT_CPYFM equ 121 copy rastor transparent
V_SHOW_C equ 122 show cursor
V_HIDE_C equ 123 hide cursor
VQ_MOUSE equ 124 sample mouse button
VEX_BUTV equ 125 exchange button change vector
VEX_MOTV equ 126 exchange movement vector
VEX_CURV equ 127 exchange cursor change vector
VQ_KEY_S equ 128 sample keyboard state
VS_CLIP equ 129 set clipping rectangle
VQT_NAME equ 130 inquire face name and index
VQT_FONT_INFO equ 131 inquire current face information
**********************************
* GEM AES ROUTINES AND CONSTANTS *
**********************************
* the AES functions
APPL_INIT equ 10
APPL_READ equ 11
APPL_WRITE equ 12
APPL_FIND equ 13
APPL_TPLAY equ 14
APPL_TRECORD equ 15
APPL_EXIT equ 19
EVNT_KEYBD equ 20
EVNT_BUTTON equ 21
EVNT_MOUSE equ 22
EVNT_MESAG equ 23
EVNT_TIMER equ 24
EVNT_MULTI equ 25
EVNT_DCLICK equ 26
MENU_BAR equ 30
MENU_ICHECK equ 31
MENU_IENABLE equ 32
MENU_TNORMAL equ 33
MENU_TEXT equ 34
MENU_REGISTER equ 35
OBJC_ADD equ 40
OBJC_DELETE equ 41
OBJC_DRAW equ 42
OBJC_FIND equ 43
OBJC_OFFSET equ 44
OBJC_ORDER equ 45
OBJC_EDIT equ 46
OBJC_CHANGE equ 47
FORM_DO equ 50
FORM_DIAL equ 51
FORM_ALERT equ 52
FORM_ERROR equ 53
FORM_CENTER equ 54
GRAF_RUBBERBOX equ 70
GRAF_DRAGBOX equ 71
GRAF_MOVEBOX equ 72
GRAF_GROWBOX equ 73
GRAF_SHRINKBOX equ 74
GRAF_WATCHBOX equ 75
GRAF_SLIDEBOX equ 76
GRAF_HANDLE equ 77
GRAF_MOUSE equ 78
GRAF_MKSTATE equ 79
SCRP_READ equ 80
SCRP_WRITE equ 81
FSEL_INPUT equ 90
WIND_CREATE equ 100
WIND_OPEN equ 101
WIND_CLOSE equ 102
WIND_DELETE equ 103
WIND_GET equ 104
WIND_SET equ 105
WIND_FIND equ 106
WIND_UPDATE equ 107
WIND_CALC equ 108
RSRC_LOAD equ 110
RSRC_FREE equ 111
RSRC_GADDR equ 112
RSRC_SADDR equ 113
RSRC_OBFIX equ 114
SHEL_READ equ 120
SHEL_WRITE equ 121
SHEL_FIND equ 124
SHEL_ENVRN equ 125
* initialise the GEM array params[0..5]
initgempars
lea params(a6),a1
lea control(a6),a0
move.l a0,(a1)+
lea global(a6),a0
clr.l 10(a0) ap_ptree
clr.l 14(a0)
clr.l 18(a0)
clr.l 22(a0)
clr.l 26(a0)
move.l a0,(a1)+
lea int_in(a6),a0
move.l a0,(a1)+
lea int_out(a6),a0
move.l a0,(a1)+
lea addr_in(a6),a0
move.l a0,(a1)+
lea addr_out(a6),a0
move.l a0,(a1)+
rts
* call GEM function D0.W - all elements in control[1..4] are set
call_gem
move.w d0,control(a6) store the op code
sub.w #10,d0
mulu #3,d0 multiply by 3
lea gem_ctrl_list(pc),a0
add.w d0,a0 points to the entry
moveq #0,d0
move.b (a0)+,d0
move.w d0,control+2(a6) do control(1)
move.b (a0)+,d0
move.w d0,control+4(a6) and control(2)
move.b (a0)+,d0
move.w d0,control+6(a6) and control(3)
clr.w control+8(a6) control(4)=0
cmp.w #RSRC_GADDR,control(a6)
bne.s c6is0
* this is a special case which has control(4) as 1
move.w #1,control+8(a6)
c6is0 lea params(a6),a0
move.l a0,d1 the pointer
move.w #200,d0 function number
trap #2
move.w int_out(a6),d0 usually a returned value
rts
* this is the list of Control parameters for the AES calls
* contains control(1..3), comment is the function number
* (an asterisk indicates it is not defined)
gem_ctrl_list
dc.b 0,1,0 10
dc.b 2,1,1 11
dc.b 2,1,1 12
dc.b 0,1,1 13
dc.b 2,1,1 14
dc.b 1,1,1 15
dc.b 0,0,0 16*
dc.b 0,0,0 17*
dc.b 0,0,0 18*
dc.b 0,1,0 19
dc.b 0,1,0 20
dc.b 3,5,0 21
dc.b 5,5,0 22
dc.b 0,1,1 23
dc.b 2,1,0 24
dc.b 16,7,1 25
dc.b 2,1,0 26
dc.b 0,0,0 27*
dc.b 0,0,0 28*
dc.b 0,0,0 29*
dc.b 1,1,1 30
dc.b 2,1,1 31
dc.b 2,1,1 32
dc.b 2,1,1 33
dc.b 1,1,2 34
dc.b 1,1,1 35
dc.b 0,0,0 36*
dc.b 0,0,0 37*
dc.b 0,0,0 38*
dc.b 0,0,0 39*
dc.b 2,1,1 40
dc.b 1,1,1 41
dc.b 6,1,1 42
dc.b 4,1,1 43
dc.b 1,3,1 44
dc.b 2,1,1 45
dc.b 4,2,1 46
dc.b 8,1,1 47
dc.b 0,0,0 48*
dc.b 0,0,0 49*
dc.b 1,1,1 50
dc.b 9,1,0 51
dc.b 1,1,1 52
dc.b 1,1,0 53
dc.b 0,5,1 54
dc.b 0,0,0 55*
dc.b 0,0,0 56*
dc.b 0,0,0 57*
dc.b 0,0,0 58*
dc.b 0,0,0 59*
dc.b 0,0,0 60*
dc.b 0,0,0 61*
dc.b 0,0,0 62*
dc.b 0,0,0 63*
dc.b 0,0,0 64*
dc.b 0,0,0 65*
dc.b 0,0,0 66*
dc.b 0,0,0 67*
dc.b 0,0,0 68*
dc.b 0,0,0 69*
dc.b 4,3,0 70
dc.b 8,3,0 71
dc.b 6,1,0 72
dc.b 8,1,0 73
dc.b 8,1,0 74
dc.b 4,1,1 75
dc.b 3,1,1 76
dc.b 0,5,0 77
dc.b 1,1,1 78
dc.b 0,5,0 79
dc.b 0,1,1 80
dc.b 0,1,1 81
dc.b 0,0,0 82*
dc.b 0,0,0 83*
dc.b 0,0,0 84*
dc.b 0,0,0 85*
dc.b 0,0,0 86*
dc.b 0,0,0 87*
dc.b 0,0,0 88*
dc.b 0,0,0 89*
dc.b 0,2,2 90
dc.b 0,0,0 91*
dc.b 0,0,0 92*
dc.b 0,0,0 93*
dc.b 0,0,0 94*
dc.b 0,0,0 95*
dc.b 0,0,0 96*
dc.b 0,0,0 97*
dc.b 0,0,0 98*
dc.b 0,0,0 99*
dc.b 5,1,0 100
dc.b 5,1,0 101
dc.b 1,1,0 102
dc.b 1,1,0 103
dc.b 2,5,0 104
dc.b 6,1,0 105
dc.b 2,1,0 106
dc.b 1,1,0 107
dc.b 6,5,0 108
dc.b 0,0,0 109*
dc.b 0,1,1 110
dc.b 0,1,0 111
dc.b 2,1,0 112 ** Control(4)=1 **
dc.b 2,1,1 113
dc.b 1,1,1 114
dc.b 0,0,0 115
dc.b 0,0,0 116
dc.b 0,0,0 117
dc.b 0,0,0 118
dc.b 0,0,0 119
dc.b 0,1,2 120
dc.b 3,1,2 121
dc.b 0,0,0 122*
dc.b 0,0,0 123*
dc.b 0,1,1 124
dc.b 0,1,3 125
***************************
* WORKSPACE *
* always addressed off A6 *
***************************
* this is the array of pointers to the rest of the AES arrays
params rs.l 6
* these are the arrays for AES
control rs.w 5
global rs.b 30
int_in rs.w 16
int_out rs.w 7
addr_in rs.l 2
addr_out rs.l 1
* these are the VDI arrays, starting with the parameter block
vdipar rs.l 5
* now the arrays themselves
contrl rs.w 12
intin rs.w 30
ptsin rs.w 30
intout rs.w 45
ptsout rs.w 12