home *** CD-ROM | disk | FTP | other *** search
/ Millennium Time Capsule / AC2000.BIN / disks / ac9_disk / g172src / gemma-i3.s < prev    next >
Encoding:
Text File  |  1997-11-16  |  30.1 KB  |  1,859 lines

  1. *************************************************
  2. *
  3. * GEMMA Extension for STOS, interpreter version.
  4. *
  5. * VDI extension, v0.50 Part 1 (3)
  6. *
  7. * (c)1997 The GEMMA programming team
  8. * All rights reserved.
  9. *
  10. * This source code, (or any derived from it) may only
  11. * only be distributed under the GNU Public Licence
  12. * (available on request). In essence this states that
  13. * this source code must be available and that binaries
  14. * must be distributed as freeware.
  15. *
  16. * The authors reserves the right to change the status of
  17. * this software at any time, without prior warning or
  18. * notification.
  19. *
  20. *    Supervisor mode   - The AES should NOT be called from
  21. *                        supervisor mode (which STOS is in)
  22. *    on-line help (not one help command per new command!)
  23.  
  24. * Jump header
  25.  
  26.     output C:\STOS\GEMMA.EXF
  27.  
  28.         bra     INIT
  29.  
  30. ***********************************************
  31. *
  32. * Header
  33. *
  34.  
  35. * Start of token list
  36.         dc.b    128
  37.  
  38. TOKENS  
  39.  
  40. * even=instruction, odd=function
  41.     dc.b    "v_bar",128
  42.     dc.b    "vsf_interior",129
  43.     dc.b    "vsf_colr",130
  44.     dc.b    "vs_clip",131
  45.     dc.b    "vst_point",132        * 5
  46.     dc.b    "vqt_name",133
  47.     dc.b    "vst_colr",134
  48.     dc.b    "chandle",135
  49.     dc.b    "v_pline",136
  50.     dc.b    "v_pmarker",137        * 10
  51.     dc.b    "v_fillarea",138
  52.     dc.b    "v_conturfll",139
  53.     dc.b    "vr_recfl",140
  54.     dc.b    "v_arc",141
  55.     dc.b    "v_pieslice",142    * 15
  56.     dc.b    "v_circle",143
  57.     dc.b    "v_ellarc",144
  58.     dc.b    "v_ellpie",145
  59.     dc.b    "v_ellipse",146
  60.     dc.b    "v_rbox",147        * 20
  61.     dc.b    "v_rfbox",148
  62.     dc.b    "v_justified",149
  63.     dc.b    "vswr_mode",150
  64.     dc.b    "vs_colr",151
  65.     dc.b    "vsl_type",152        * 25
  66.     dc.b    "vsl_udsty",153
  67.     dc.b    "vsl_width",154
  68.     dc.b    "vsl_colr",155
  69.     dc.b    "v_show_c",156
  70.     dc.b    "vsl_ends",157        * 30
  71.     dc.b    "v_hide_c",158
  72.     dc.b    "vst_load_fonts",159
  73.     dc.b    "v_gtext",160
  74.     dc.b    "dummygemma6",161        * vst_font
  75.     dc.b    "v_ftext",162        * 35
  76.     dc.b    "v_get_pixel",163
  77.     dc.b    "vst_font",164
  78.     dc.b    "v_opnwk",165
  79.     dc.b    "dummygemma8",166
  80.     dc.b    "dummygemma9",167        * 40
  81.     dc.b    "vsm_type",168
  82.     dc.b    "vsm_height",169
  83.     dc.b    "vst_height",170
  84.     dc.b    "vst_rotation",171
  85.     dc.b    "vst_effects",172    * 45
  86.     dc.b    "vst_alignment",173
  87.     dc.b    "vsf_style",174
  88.     dc.b    "vsf_perimeter",175
  89.     dc.b    "v_openvwk",176        * 49
  90.  
  91. * The end of the token list
  92.         dc.b    0
  93.  
  94.     even
  95.     
  96. * Now the jump table
  97.  
  98. JUMPS   dc.w   49        in order of token, starting from 128
  99.     dc.l    v_bar
  100.     dc.l    vsf_interior
  101.     dc.l    vsf_color
  102.     dc.l    vs_clip
  103.     dc.l    vst_point    * 5
  104.     dc.l    vqt_name
  105.     dc.l    vst_color
  106.     dc.l    get_handle
  107.     dc.l    v_pline
  108.     dc.l    v_pmarker    * 10
  109.     dc.l    v_fillarea
  110.     dc.l    v_contourfill
  111.     dc.l    vr_recfl
  112.     dc.l    v_arc
  113.     dc.l    v_pieslice    * 15
  114.     dc.l    v_circle
  115.     dc.l    v_ellarc
  116.     dc.l    v_ellpie
  117.     dc.l    v_ellipse
  118.     dc.l    v_rbox        * 20
  119.     dc.l    v_rfbox
  120.     dc.l    v_justified
  121.     dc.l    vswr_mode
  122.     dc.l    vs_color
  123.     dc.l    vsl_type    * 25
  124.     dc.l    vsl_udsty
  125.     dc.l    vsl_width
  126.     dc.l    vsl_color
  127.     dc.l    v_show_c
  128.     dc.l    vsl_ends    * 30
  129.     dc.l    v_hide_c
  130.     dc.l    vst_load_fonts
  131.     dc.l    v_gtext
  132.     dc.l    dummy        * 34
  133.     dc.l    v_ftext        * 35
  134.     dc.l    v_get_pixel
  135.     dc.l    vst_font
  136.     dc.l    v_opnwk
  137.     dc.l    dummy
  138.     dc.l    dummy    * 40
  139.     dc.l    vsm_type
  140.     dc.l    vsm_height
  141.     dc.l    vst_height
  142.     dc.l    vst_rotation
  143.     dc.l    vst_effects    * 45
  144.     dc.l    vst_alignment
  145.     dc.l    vsf_style
  146.     dc.l    vsf_perimeter
  147.     dc.l    v_openvwk
  148.  
  149. * The welcome mesages in English and French
  150.  
  151. WELCOME dc.b    10,13
  152.  
  153.     dc.b    10,13,"                          The GEMMA Extension v1.52"
  154.     dc.b    10,13,"                       (c) 1997 The GEMMA programming team"
  155.      dc.b    10,13,"                           VDI routines installed.",10,13,0
  156.  
  157.     dc.b    10,13,"                          le Extension GEMMA v1.52"
  158.     dc.b    10,13,"                     (c) 1997 Le GEMMA programming team"
  159.      dc.b    10,13,"                        routines de VDI installes.",10,13,0
  160.         even
  161.  
  162. * Some system variables
  163.  
  164. RETURN    dc.l    0
  165. SYSTEM    dc.l    0
  166.  
  167. * The routine that is called on start-up
  168.  
  169. INIT    lea     END,a0
  170.         lea     COLDST,a1
  171.         rts
  172.  
  173. COLDST    move.l    a0,SYSTEM
  174.     lea     WELCOME,a0      ; vital stuff
  175.         lea     WARMST,a1
  176.         lea     TOKENS,a2
  177.         lea     JUMPS,a3
  178.         rts
  179.  
  180. * Executed on UNDO in editor
  181.  
  182. WARMST  rts
  183.  
  184. *************************
  185. *
  186. * Our commands
  187. *
  188. *
  189.  
  190. * The VDI commands --------------------------------------------
  191.  
  192. get_handle    move.l    (sp)+,RETURN
  193.         cmpi.w    #0,d0
  194.         bne    SYNTAX
  195.  
  196.         move.w    #77,control    graf_handle without other bits
  197.         move.w    #0,control+2
  198.         move.w    #5,control+4
  199.         move.w    #0,control+6
  200.         move.w    #0,control+8
  201.         bsr    call_aes
  202.  
  203.         moveq.l    #0,d2
  204.         move.w    int_out,d3
  205.  
  206.         move.l    RETURN,a0
  207.         jmp    (a0)
  208.  
  209. vst_load_fonts    move.l    (sp)+,RETURN
  210.         cmpi.w    #1,d0
  211.         bne    SYNTAX
  212.         
  213.         movem.l    (sp)+,d2-d4   * handle
  214.         tst.b    d2
  215.         bne    TYPEMIS
  216.         move.w    d3,contrl6
  217.  
  218.         move.w    #119,contrl
  219.         clr.w    contrl1
  220.         clr.w    contrl2
  221.         move.w    #1,contrl3
  222.         clr.w    contrl4
  223.         clr.w    contrl5
  224.         move.w    #0,intin
  225.         bsr    call_vdi
  226.  
  227. *        moveq.l    #0,d2
  228.         move.w    intout,d3
  229.  
  230.                 move.l    RETURN,a0
  231.                 jmp    (a0)
  232.  
  233. v_openvwk    move.l    (sp)+,RETURN
  234.         cmpi.w    #1,d0
  235.         bne    SYNTAX
  236.  
  237.         movem.l    (sp)+,d2-d4   * handle
  238.         tst.b    d2
  239.         bne    TYPEMIS
  240.         move.w    d3,contrl6        
  241.  
  242.         
  243.         move    #100,contrl
  244.         move    #0,contrl1
  245.         move    #11,contrl3
  246. *        move    #1,contrl+12
  247.         move    #1,intin+2
  248.         move    #1,intin+4
  249.         move    #1,intin+6
  250.         move    #1,intin+8
  251.         move    #1,intin+10
  252.         move    #1,intin+12
  253.         move    #1,intin+14
  254.         move    #1,intin+16
  255.         move    #1,intin+18
  256.         move    #2,intin+20
  257.         jsr    call_vdi
  258.  
  259.         move.l    #0,d2
  260.         move.l    contrl6,d3
  261.  
  262.         move.l    RETURN,a0
  263.         jmp    (a0)
  264.  
  265. vst_unload_fonts    move.l    (sp)+,RETURN
  266.             cmpi.w    #1,d0
  267.             bne    SYNTAX
  268.  
  269.             movem.l    (sp)+,d2-d4   * handle
  270.             tst.b    d2
  271.             bne    TYPEMIS
  272.             move.w    d3,contrl6        
  273.  
  274.             move.w    #120,contrl
  275.             clr.w    contrl1
  276.             clr.w    contrl2
  277.             move.w    #1,contrl3
  278.             clr.w    contrl4
  279.             clr.w    contrl5
  280.             move.w    #0,intin
  281.             bsr    call_vdi
  282.  
  283.             move.l    RETURN,a0
  284.             jmp    (a0)
  285.  
  286. v_gtext        move.l    (sp)+,RETURN
  287.         cmpi.w    #4,d0
  288.         bne    SYNTAX
  289.  
  290.         move.w    #8,contrl
  291.         move.w    #1,contrl1
  292.         clr.w    contrl2
  293.         clr.w    contrl4
  294.         clr.w    contrl5
  295.  
  296.         movem.l    (sp)+,d2-d4   * text
  297.         tst.b    d2
  298.         bne    TYPEMIS
  299.         move.l    d3,a3
  300.  
  301.         moveq    #0,d1
  302.         moveq    #0,d0
  303.         lea    intin,a4
  304. .copy        move.b    (a3)+,d1        convert C string into words
  305.         beq.s    .end
  306.         move.w    d1,(a4)+
  307.         addq.b    #1,d0
  308.         bpl.s    .copy
  309. .end        move.w    d0,contrl3
  310.         move.w    #1,contrl1
  311.  
  312.         movem.l    (sp)+,d2-d4   * y
  313.         tst.b    d2
  314.         bne    TYPEMIS
  315.         move.w    d3,ptsin+2
  316.  
  317.         movem.l    (sp)+,d2-d4   * x
  318.         tst.b    d2
  319.         bne    TYPEMIS
  320.         move.w    d3,ptsin
  321.  
  322.         movem.l    (sp)+,d2-d4   * handle
  323.         tst.b    d2
  324.         bne    TYPEMIS
  325.         move.w    d3,contrl6
  326.  
  327.         bsr    call_vdi
  328.  
  329.                 move.l    RETURN,a0
  330.                 jmp    (a0)
  331.  
  332. v_ftext        move.l    (sp)+,RETURN
  333.         cmpi.w    #4,d0
  334.         bne    SYNTAX
  335.  
  336.         move.w    #241,contrl
  337.         clr.w    contrl2
  338.         clr.w    contrl4
  339.         clr.w    contrl5
  340.  
  341.         movem.l    (sp)+,d2-d4   * text
  342.         tst.b    d2
  343.         bne    TYPEMIS
  344.         move.l    d3,a3
  345.  
  346.         moveq    #0,d1
  347.         moveq    #0,d0
  348.         lea    intin,a4
  349. .copyftext    move.b    (a3)+,d1        convert C string into words
  350.         beq.s    .endftext
  351.         move.w    d1,(a4)+
  352.         addq.b    #1,d0
  353.         bpl.s    .copyftext
  354. .endftext    move.w    d0,contrl3
  355.         move.w    #1,contrl1
  356.  
  357.         movem.l    (sp)+,d2-d4   * y
  358.         tst.b    d2
  359.         bne    TYPEMIS
  360.         move.w    d3,ptsin+2
  361.  
  362.         movem.l    (sp)+,d2-d4   * x
  363.         tst.b    d2
  364.         bne    TYPEMIS
  365.         move.w    d3,ptsin
  366.  
  367.         movem.l    (sp)+,d2-d4   * handle
  368.         tst.b    d2
  369.         bne    TYPEMIS
  370.         move.w    d3,contrl6
  371.  
  372.         bsr    call_vdi
  373.  
  374.                 move.l    RETURN,a0
  375.                 jmp    (a0)
  376.  
  377.  
  378. vst_font    move.l    (sp)+,RETURN
  379.         cmpi.w    #2,d0
  380.         bne    SYNTAX
  381.  
  382.         movem.l    (sp)+,d2-d4   * font
  383.         tst.b    d2
  384.         bne    TYPEMIS
  385.         move.w    d3,intin
  386.  
  387.         movem.l    (sp)+,d2-d4   * handle
  388.         tst.b    d2
  389.         bne    TYPEMIS
  390.         move.w    d3,contrl6        
  391.  
  392.         move.w    #21,contrl
  393.         move.w  #0,contrl1
  394.         move.w    #0,contrl2
  395.         move.w    #1,contrl3
  396.         move.w    #0,contrl4
  397.         move.w  #0,contrl5
  398.  
  399.         bsr    call_vdi
  400.  
  401.                 move.l    RETURN,a0
  402.                 jmp    (a0)
  403.  
  404. vst_color    move.l    (sp)+,RETURN
  405.         cmpi.w    #2,d0
  406.         bne    SYNTAX
  407.  
  408.         movem.l    (sp)+,d2-d4   * colour
  409.         tst.b    d2
  410.         bne    TYPEMIS
  411.         move.w    d3,intin
  412.  
  413.         movem.l    (sp)+,d2-d4   * handle
  414.         tst.b    d2
  415.         bne    TYPEMIS
  416.         move.w    d3,contrl6
  417.         
  418.         move.w    #22,contrl
  419.         clr.w    contrl1
  420.         clr.w    contrl2
  421.         move.w    #1,contrl3
  422.         clr.w    contrl4
  423.         clr.w    contrl5
  424.  
  425.         bsr    call_vdi
  426.  
  427.                 move.l    RETURN,a0
  428.                 jmp    (a0)
  429.  
  430. vqt_name    move.l    (sp)+,RETURN
  431.         cmpi.w    #3,d0
  432.         bne    SYNTAX
  433.  
  434.         move.w    #130,contrl
  435.         clr.w    contrl1
  436.         clr.w    contrl2
  437.         move.w    #1,contrl3
  438.         clr.w    contrl4
  439.         clr.w    contrl5
  440.  
  441.         movem.l    (sp)+,d2-d4   * name space
  442.         tst.b    d2
  443.         bne    TYPEMIS
  444.         move.l    d3,a0
  445.  
  446.         movem.l    (sp)+,d2-d4   * index
  447.         tst.b    d2
  448.         bne    TYPEMIS
  449.         move.w    d3,intin
  450.  
  451.         movem.l    (sp)+,d2-d4   * handle
  452.         tst.b    d2
  453.         bne    TYPEMIS
  454.         move.w    d3,contrl6
  455.  
  456.         bsr    call_vdi
  457.  
  458.         lea.l    intout+2,a1
  459.         move.l    a1,(a0)
  460.  
  461.         lea.l    intout,a1
  462.         move.w    (a1),d3
  463.         move.l    #0,d2    
  464.  
  465.                 move.l    RETURN,a0
  466.                 jmp    (a0)
  467.  
  468. vst_point    move.l    (sp)+,RETURN
  469.         cmpi.w    #2,d0
  470.         bne    SYNTAX
  471.         
  472.         move.w    #107,contrl
  473.         clr.w    contrl1
  474.         clr.w    contrl2
  475.         move.w    #1,contrl3
  476.         clr.w    contrl4
  477.         clr.w    contrl5
  478.  
  479.         movem.l    (sp)+,d2-d4   * points
  480.         tst.b    d2
  481.         bne    TYPEMIS
  482.         move.w    d3,intin
  483.  
  484.         movem.l    (sp)+,d2-d4   * handle
  485.         tst.b    d2
  486.         bne    TYPEMIS
  487.         move.w    d3,contrl6
  488.  
  489.         bsr    call_vdi
  490.  
  491.         move.w    intout,d3
  492.  
  493.                 move.l    RETURN,a0
  494.                 jmp    (a0)
  495.  
  496. vs_clip        move.l    (sp)+,RETURN
  497.         cmpi.w    #6,d0
  498.         bne    SYNTAX
  499.  
  500.         move.w    #129,contrl
  501.         move.w    #2,contrl1
  502.         clr.w    contrl2
  503.         move.w    #1,contrl3
  504.         clr.w    contrl4
  505.         clr.w    contrl5
  506.  
  507.         movem.l    (sp)+,d2-d4   * y2
  508.         tst.b    d2
  509.         bne    TYPEMIS
  510.         move.w    d3,ptsin+6
  511.  
  512.         movem.l    (sp)+,d2-d4   * x2
  513.         tst.b    d2
  514.         bne    TYPEMIS
  515.         move.w    d3,ptsin+4
  516.  
  517.         movem.l    (sp)+,d2-d4   * y1
  518.         tst.b    d2
  519.         bne    TYPEMIS
  520.         move.w    d3,ptsin+2
  521.  
  522.         movem.l    (sp)+,d2-d4   * x1
  523.         tst.b    d2
  524.         bne    TYPEMIS
  525.         move.w    d3,ptsin
  526.  
  527.         movem.l    (sp)+,d2-d4   * flag
  528.         tst.b    d2
  529.         bne    TYPEMIS
  530.         move.w    d3,intin
  531.  
  532.         movem.l    (sp)+,d2-d4   * handle
  533.         tst.b    d2
  534.         bne    TYPEMIS
  535.         move.w    d3,contrl6
  536.  
  537.         bsr    call_vdi
  538.  
  539.                 move.l    RETURN,a0
  540.                 jmp    (a0)
  541.  
  542. vsf_interior    move.l    (sp)+,RETURN
  543.         cmpi.w    #2,d0
  544.         bne    SYNTAX
  545.  
  546.         move.w    #23,contrl
  547.         move.w    #0,contrl1
  548.         clr.w    contrl2
  549.         clr.w    contrl4
  550.  
  551.         movem.l    (sp)+,d2-d4   * y2
  552.         tst.b    d2
  553.         bne    TYPEMIS
  554.         move.w    d3,contrl3
  555.  
  556.         move.w    #1,contrl5
  557.  
  558.         movem.l    (sp)+,d2-d4   * handle
  559.         tst.b    d2
  560.         bne    TYPEMIS
  561.         move.w    d3,contrl6
  562.  
  563.         move.w    d3,intin
  564.  
  565.         bsr    call_vdi
  566.  
  567.                 move.l    RETURN,a0
  568.                 jmp    (a0)
  569.  
  570. vsf_color    move.l    (sp)+,RETURN
  571.         cmpi.w    #2,d0
  572.         bne    SYNTAX
  573.  
  574.         move.w    #25,contrl
  575.         move.w    #0,contrl1
  576.         clr.w    contrl2
  577.         move.w    #1,contrl3
  578.         clr.w    contrl4
  579.         clr.w    contrl5
  580.  
  581.         movem.l    (sp)+,d2-d4   * y2
  582.         tst.b    d2
  583.         bne    TYPEMIS
  584.         move.w    d3,intin
  585.  
  586.         movem.l    (sp)+,d2-d4   * handle
  587.         tst.b    d2
  588.         bne    TYPEMIS
  589.         move.w    d3,contrl6
  590.  
  591.         bsr    call_vdi
  592.  
  593.                 move.l    RETURN,a0
  594.                 jmp    (a0)
  595.  
  596. v_bar        move.l    (sp)+,RETURN
  597.         cmpi.w    #5,d0
  598.         bne    SYNTAX
  599.  
  600.         move.w    #11,contrl
  601.         move.w    #2,contrl1
  602.         clr.w    contrl2
  603.         move.w    #0,contrl3
  604.         clr.w    contrl4
  605.         move.w    #1,contrl5
  606.         move.w    #0,intin
  607.  
  608.         movem.l    (sp)+,d2-d4   * y2
  609.         tst.b    d2
  610.         bne    TYPEMIS
  611.         move.w    d3,ptsin+6
  612.  
  613.         movem.l    (sp)+,d2-d4   * x2
  614.         tst.b    d2
  615.         bne    TYPEMIS
  616.         move.w    d3,ptsin+4
  617.  
  618.         movem.l    (sp)+,d2-d4   * y1
  619.         tst.b    d2
  620.         bne    TYPEMIS
  621.         move.w    d3,ptsin+2
  622.  
  623.         movem.l    (sp)+,d2-d4   * x1
  624.         tst.b    d2
  625.         bne    TYPEMIS
  626.         move.w    d3,ptsin
  627.  
  628.         movem.l    (sp)+,d2-d4   * handle
  629.         tst.b    d2
  630.         bne    TYPEMIS
  631.         move.w    d3,contrl6
  632.  
  633.         bsr    call_vdi
  634.  
  635.                 move.l    RETURN,a0
  636.                 jmp    (a0)
  637.  
  638. v_show_c    move.l    (sp)+,RETURN
  639.         cmpi.w    #0,d0
  640.         bne    SYNTAX
  641.         
  642.         move.w    #77,control    graf_handle
  643.         move.w    #0,control+2
  644.         move.w    #5,control+4
  645.         move.w    #0,control+6
  646.         move.w    #0,control+8
  647.         bsr    call_aes
  648.  
  649.         move.w    d0,current_handle
  650.  
  651.         move.w    #122,contrl
  652.         clr.w    contrl1
  653.         move.w    #1,contrl3
  654.         move.w    current_handle,contrl6
  655.         move.w    #0,intin
  656.         bsr    call_vdi
  657.  
  658.                 move.l    RETURN,a0
  659.                 jmp    (a0)
  660.  
  661. v_hide_c    move.l    (sp)+,RETURN
  662.  
  663.         cmpi    #0,d0
  664.         bne    SYNTAX
  665.         
  666.         move.w    #77,control    graf_handle
  667.         move.w    #0,control+2
  668.         move.w    #5,control+4
  669.         move.w    #0,control+6
  670.         move.w    #0,control+8
  671.         bsr    call_aes
  672.         move.w    d0,current_handle
  673.  
  674.         move.w    #123,contrl    
  675.         clr.w    contrl1
  676.         clr.w    contrl3
  677.         move.w    current_handle,contrl6
  678.         bsr    call_vdi
  679.  
  680.         move.l    RETURN,a0
  681.         jmp    (a0)
  682.  
  683. v_pmarker    move.l    (sp)+,RETURN
  684.         cmpi    #3,d0
  685.         bne    SYNTAX
  686.  
  687.         movem.l    (sp)+,d2-d4    * pts
  688. *        tst.b    d2
  689. *        bne    TYPEMIS
  690. *        move.w    ptsin
  691.  
  692.         movem.l    (sp)+,d2-d4    * n
  693.         tst.b    d2
  694.         bne    TYPEMIS
  695.         move.w    d3,contrl1
  696.  
  697.         movem.l    (sp)+,d2-d4    * handle
  698.         tst.b    d2
  699.         bne    TYPEMIS
  700.         move.w    d3,contrl6
  701.         
  702.         move.w    #7,contrl
  703.         clr.w    contrl2
  704.         clr.w    contrl3
  705.         clr.w    contrl4
  706.         clr.w    contrl5
  707.  
  708.         bsr    call_vdi
  709.  
  710.                 move.l    RETURN,a0
  711.                 jmp    (a0)
  712.  
  713. v_fillarea    move.l    (sp)+,RETURN
  714.         cmpi    #3,d0
  715.         bne    SYNTAX
  716.  
  717.         movem.l    (sp)+,d2-d4    * pts
  718.         tst.b    d2
  719.         bne    TYPEMIS
  720. *        move.w    d3,ptsin
  721.  
  722.         movem.l    (sp)+,d2-d4    * n
  723.         tst.b    d2
  724.         bne    TYPEMIS
  725.         move.w    d3,contrl1
  726.  
  727.         movem.l    (sp)+,d2-d4    * handle
  728.         tst.b    d2
  729.         bne    TYPEMIS
  730.         move.w    d3,contrl6
  731.         
  732.         move.w    #9,contrl
  733.         clr.w    contrl2
  734.         clr.w    contrl3
  735.         clr.w    contrl4
  736.         clr.w    contrl5
  737.  
  738.         bsr    call_vdi
  739.  
  740.                 move.l    RETURN,a0
  741.                 jmp    (a0)
  742.  
  743. v_contourfill    move.l    (sp)+,RETURN
  744.         cmpi    #4,d0
  745.         bne    SYNTAX
  746.  
  747.         movem.l    (sp)+,d2-d4   * colour
  748.         tst.b    d2
  749.         bne    TYPEMIS
  750.         move.w    d3,intin
  751.  
  752.         movem.l    (sp)+,d2-d4   * y
  753.         tst.b    d2
  754.         bne    TYPEMIS
  755.         move.w    d3,ptsin+2
  756.  
  757.         movem.l    (sp)+,d2-d4   * x
  758.         tst.b    d2
  759.         bne    TYPEMIS
  760.         move.w    d3,ptsin
  761.  
  762.         movem.l    (sp)+,d2-d4   * handle
  763.         tst.b    d2
  764.         bne    TYPEMIS
  765.         move.w    d3,contrl6
  766.  
  767.         move.w    #103,contrl
  768.         move.w    #0,contrl1
  769.         clr.w    contrl2
  770.         move.w    #0,contrl3
  771.         clr.w    contrl4
  772.         move.w    #0,contrl5
  773.  
  774.         bsr    call_vdi
  775.  
  776.                 move.l    RETURN,a0
  777.                 jmp    (a0)
  778.  
  779. vr_recfl    move.l    (sp)+,RETURN
  780.         cmpi    #5,d0
  781.         bne    SYNTAX
  782.  
  783.         movem.l    (sp)+,d2-d4   * y2
  784.         tst.b    d2
  785.         bne    TYPEMIS
  786.         move.w    d3,ptsin+6
  787.  
  788.         movem.l    (sp)+,d2-d4   * x2
  789.         tst.b    d2
  790.         bne    TYPEMIS
  791.         move.w    d3,ptsin+4
  792.  
  793.         movem.l    (sp)+,d2-d4   * y1
  794.         tst.b    d2
  795.         bne    TYPEMIS
  796.         move.w    d3,ptsin+2
  797.  
  798.         movem.l    (sp)+,d2-d4   * x1
  799.         tst.b    d2
  800.         bne    TYPEMIS
  801.         move.w    d3,ptsin
  802.  
  803.         movem.l    (sp)+,d2-d4   * handle
  804.         tst.b    d2
  805.         bne    TYPEMIS
  806.         move.w    d3,contrl6
  807.  
  808.         move.w    #114,contrl
  809.         move.w    #2,contrl1
  810.         clr.w    contrl2
  811.         move.w    #0,contrl3
  812.         clr.w    contrl4
  813.         move.w    #1,contrl5
  814.  
  815.         bsr    call_vdi
  816.  
  817.                 move.l    RETURN,a0
  818.                 jmp    (a0)
  819.  
  820. v_arc        move.l    (sp)+,RETURN
  821.         cmpi    #6,d0
  822.         bne    SYNTAX
  823.  
  824.         movem.l    (sp)+,d2-d4   * end_angle
  825.         tst.b    d2
  826.         bne    TYPEMIS
  827.         move.w    d3,intin+2
  828.  
  829.         movem.l    (sp)+,d2-d4   * start_angle
  830.         tst.b    d2
  831.         bne    TYPEMIS
  832.         move.w    d3,intin
  833.  
  834.         movem.l    (sp)+,d2-d4   * r
  835.         tst.b    d2
  836.         bne    TYPEMIS
  837.         move.w    d3,ptsin+12
  838.  
  839.         movem.l    (sp)+,d2-d4    * y
  840.         tst.b    d2
  841.         bne    TYPEMIS
  842.         move.w    d3,ptsin+2
  843.  
  844.         movem.l    (sp)+,d2-d4    * x
  845.         tst.b    d2
  846.         bne    TYPEMIS
  847.         move.w    d3,ptsin
  848.  
  849.         clr.w    ptsin+4
  850.         clr.w    ptsin+6
  851.         clr.w    ptsin+8
  852.         clr.w    ptsin+10
  853.  
  854.         movem.l    (sp)+,d2-d4   * handle
  855.         tst.b    d2
  856.         bne    TYPEMIS
  857.         move.w    d3,contrl6
  858.  
  859.         move.w    #11,contrl
  860.         move.w    #4,contrl1
  861.         clr.w    contrl2
  862.         move.w    #2,contrl3
  863.         clr.w    contrl4
  864.         move.w    #2,contrl5
  865.  
  866.         bsr    call_vdi
  867.  
  868.                 move.l    RETURN,a0
  869.                 jmp    (a0)
  870.  
  871. v_pieslice    move.l    (sp)+,RETURN
  872.         cmpi    #6,d0
  873.         bne    SYNTAX
  874.  
  875.         movem.l    (sp)+,d2-d4   * end_angle
  876.         tst.b    d2
  877.         bne    TYPEMIS
  878.         move.w    d3,intin+2
  879.  
  880.         movem.l    (sp)+,d2-d4   * start_angle
  881.         tst.b    d2
  882.         bne    TYPEMIS
  883.         move.w    d3,intin
  884.  
  885.         movem.l    (sp)+,d2-d4   * r
  886.         tst.b    d2
  887.         bne    TYPEMIS
  888.         move.w    d3,ptsin+12
  889.  
  890.         movem.l    (sp)+,d2-d4   * y
  891.         tst.b    d2
  892.         bne    TYPEMIS
  893.         move.w    d3,ptsin+2
  894.  
  895.         movem.l    (sp)+,d2-d4   * x
  896.         tst.b    d2
  897.         bne    TYPEMIS
  898.         move.w    d3,ptsin
  899.  
  900.         movem.l    (sp)+,d2-d4   * handle
  901.         tst.b    d2
  902.         bne    TYPEMIS
  903.         move.w    d3,contrl6
  904.  
  905.         move.w    #11,contrl
  906.         move.w    #4,contrl1
  907.         clr.w    contrl2
  908.         move.w    #2,contrl3
  909.         clr.w    contrl4
  910.         move.w    #3,contrl5
  911.  
  912.         clr.w    ptsin+4
  913.         clr.w    ptsin+6
  914.         clr.w    ptsin+8
  915.         clr.w    ptsin+10
  916.  
  917.         bsr    call_vdi
  918.  
  919.                 move.l    RETURN,a0
  920.                 jmp    (a0)
  921.  
  922. v_circle    move.l    (sp)+,RETURN
  923.         cmpi.w    #4,d0
  924.         bne    SYNTAX
  925.  
  926.         movem.l    (sp)+,d2-d4   * r
  927.         tst.b    d2
  928.         bne    TYPEMIS
  929.         move.w    d3,ptsin+8
  930.  
  931.         movem.l    (sp)+,d2-d4   * y
  932.         tst.b    d2
  933.         bne    TYPEMIS
  934.         move.w    d3,ptsin+2
  935.  
  936.         movem.l    (sp)+,d2-d4   * x
  937.         tst.b    d2
  938.         bne    TYPEMIS
  939.         move.w    d3,ptsin
  940.  
  941.         movem.l    (sp)+,d2-d4   * handle
  942.         tst.b    d2
  943.         bne    TYPEMIS
  944.         move.w    d3,contrl6
  945.  
  946.         move.w    #11,contrl
  947.         move.w    #3,contrl1
  948.         clr.w    contrl2
  949.         move.w    #0,contrl3
  950.         clr.w    contrl4
  951.         move.w    #4,contrl5
  952.  
  953.         clr.w    ptsin+4
  954.         clr.w    ptsin+6
  955.  
  956.         move.w    0,ptsin+10
  957.  
  958.         bsr    call_vdi
  959.  
  960.                 move.l    RETURN,a0
  961.                 jmp    (a0)
  962.  
  963. v_ellarc    move.l    (sp)+,RETURN
  964.         cmpi    #7,d0
  965.         bne    SYNTAX
  966.  
  967.         movem.l    (sp)+,d2-d4   * end_angle
  968.         tst.b    d2
  969.         bne    TYPEMIS
  970.         move.w    d3,intin+2
  971.  
  972.         movem.l    (sp)+,d2-d4   * start_angle
  973.         tst.b    d2
  974.         bne    TYPEMIS
  975.         move.w    d3,intin
  976.  
  977.         movem.l    (sp)+,d2-d4   * yr
  978.         tst.b    d2
  979.         bne    TYPEMIS
  980.         move.w    d3,ptsin+6
  981.  
  982.         movem.l    (sp)+,d2-d4   * xr
  983.         tst.b    d2
  984.         bne    TYPEMIS
  985.         move.w    d3,ptsin+4
  986.  
  987.         movem.l    (sp)+,d2-d4   * y
  988.         tst.b    d2
  989.         bne    TYPEMIS
  990.         move.w    d3,ptsin+2
  991.  
  992.         movem.l    (sp)+,d2-d4   * x
  993.         tst.b    d2
  994.         bne    TYPEMIS
  995.         move.w    d3,ptsin
  996.  
  997.         movem.l    (sp)+,d2-d4   * handle
  998.         tst.b    d2
  999.         bne    TYPEMIS
  1000.         move.w    d3,contrl6
  1001.  
  1002.         move.w    #11,contrl
  1003.         move.w    #2,contrl1
  1004.         clr.w    contrl2
  1005.         move.w    #3,contrl3
  1006.         clr.w    contrl4
  1007.         move.w    #6,contrl5
  1008.  
  1009.         bsr    call_vdi
  1010.  
  1011.                 move.l    RETURN,a0
  1012.                 jmp    (a0)
  1013.  
  1014. v_ellpie    move.l    (sp)+,RETURN
  1015.         cmpi    #7,d0
  1016.         bne    SYNTAX
  1017.  
  1018.         movem.l    (sp)+,d2-d4   * end_angle
  1019.         tst.b    d2
  1020.         bne    TYPEMIS
  1021.         move.w    d3,intin+2
  1022.  
  1023.         movem.l    (sp)+,d2-d4   * start_angle
  1024.         tst.b    d2
  1025.         bne    TYPEMIS
  1026.         move.w    d3,intin
  1027.  
  1028.         movem.l    (sp)+,d2-d4   * yr
  1029.         tst.b    d2
  1030.         bne    TYPEMIS
  1031.         move.w    d3,ptsin+6
  1032.  
  1033.         movem.l    (sp)+,d2-d4   * xr
  1034.         tst.b    d2
  1035.         bne    TYPEMIS
  1036.         move.w    d3,ptsin+4
  1037.  
  1038.         movem.l    (sp)+,d2-d4   * y
  1039.         tst.b    d2
  1040.         bne    TYPEMIS
  1041.         move.w    d3,ptsin+2
  1042.  
  1043.         movem.l    (sp)+,d2-d4   * x
  1044.         tst.b    d2
  1045.         bne    TYPEMIS
  1046.         move.w    d3,ptsin
  1047.  
  1048.         movem.l    (sp)+,d2-d4   * handle
  1049.         tst.b    d2
  1050.         bne    TYPEMIS
  1051.         move.w    d3,contrl6
  1052.  
  1053.         move.w    #11,contrl
  1054.         move.w    #2,contrl1
  1055.         clr.w    contrl2
  1056.         move.w    #2,contrl3
  1057.         clr.w    contrl4
  1058.         move.w    #7,contrl5
  1059.  
  1060.         bsr    call_vdi
  1061.  
  1062.                 move.l    RETURN,a0
  1063.                 jmp    (a0)
  1064.  
  1065. v_ellipse    move.l    (sp)+,RETURN
  1066.         cmpi    #5,d0
  1067.         bne    SYNTAX
  1068.  
  1069.         movem.l    (sp)+,d2-d4   * yr
  1070.         tst.b    d2
  1071.         bne    TYPEMIS
  1072.         move.w    d3,ptsin+6
  1073.  
  1074.         movem.l    (sp)+,d2-d4   * xr
  1075.         tst.b    d2
  1076.         bne    TYPEMIS
  1077.         move.w    d3,ptsin+4
  1078.  
  1079.         movem.l    (sp)+,d2-d4   * y
  1080.         tst.b    d2
  1081.         bne    TYPEMIS
  1082.         move.w    d3,ptsin+2
  1083.  
  1084.         movem.l    (sp)+,d2-d4   * x
  1085.         tst.b    d2
  1086.         bne    TYPEMIS
  1087.         move.w    d3,ptsin
  1088.  
  1089.         movem.l    (sp)+,d2-d4   * handle
  1090.         tst.b    d2
  1091.         bne    TYPEMIS
  1092.         move.w    d3,contrl6
  1093.  
  1094.         move.w    #11,contrl
  1095.         move.w    #2,contrl1
  1096.         clr.w    contrl2
  1097.         move.w    #0,contrl3
  1098.         clr.w    contrl4
  1099.         move.w    #5,contrl5
  1100.  
  1101.         bsr    call_vdi
  1102.  
  1103.                 move.l    RETURN,a0
  1104.                 jmp    (a0)
  1105.  
  1106. v_rbox        move.l    (sp)+,RETURN
  1107.         cmpi    #5,d0
  1108.         bne    SYNTAX
  1109.  
  1110.         movem.l    (sp)+,d2-d4   * y2
  1111.         tst.b    d2
  1112.         bne    TYPEMIS
  1113.         move.w    d3,ptsin+6
  1114.  
  1115.         movem.l    (sp)+,d2-d4   * x2
  1116.         tst.b    d2
  1117.         bne    TYPEMIS
  1118.         move.w    d3,ptsin+4
  1119.  
  1120.         movem.l    (sp)+,d2-d4   * y1
  1121.         tst.b    d2
  1122.         bne    TYPEMIS
  1123.         move.w    d3,ptsin+2
  1124.  
  1125.         movem.l    (sp)+,d2-d4   * x1
  1126.         tst.b    d2
  1127.         bne    TYPEMIS
  1128.         move.w    d3,ptsin
  1129.  
  1130.         movem.l    (sp)+,d2-d4   * handle
  1131.         tst.b    d2
  1132.         bne    TYPEMIS
  1133.         move.w    d3,contrl6
  1134.  
  1135.         move.w    #11,contrl
  1136.         move.w    #2,contrl1
  1137.         clr.w    contrl2
  1138.         move.w    #0,contrl3
  1139.         clr.w    contrl4
  1140.         move.w    #8,contrl5
  1141.  
  1142.         bsr    call_vdi
  1143.  
  1144.                 move.l    RETURN,a0
  1145.                 jmp    (a0)
  1146.  
  1147. v_rfbox        move.l    (sp)+,RETURN
  1148.         cmpi    #5,d0
  1149.         bne    SYNTAX
  1150.  
  1151.         movem.l    (sp)+,d2-d4   * y2
  1152.         tst.b    d2
  1153.         bne    TYPEMIS
  1154.         move.w    d3,ptsin+6
  1155.  
  1156.         movem.l    (sp)+,d2-d4   * x2
  1157.         tst.b    d2
  1158.         bne    TYPEMIS
  1159.         move.w    d3,ptsin+4
  1160.  
  1161.         movem.l    (sp)+,d2-d4   * y1
  1162.         tst.b    d2
  1163.         bne    TYPEMIS
  1164.         move.w    d3,ptsin+2
  1165.  
  1166.         movem.l    (sp)+,d2-d4   * x1
  1167.         tst.b    d2
  1168.         bne    TYPEMIS
  1169.         move.w    d3,ptsin
  1170.  
  1171.         movem.l    (sp)+,d2-d4   * handle
  1172.         tst.b    d2
  1173.         bne    TYPEMIS
  1174.         move.w    d3,contrl6
  1175.  
  1176.         move.w    #11,contrl
  1177.         move.w    #2,contrl1
  1178.         clr.w    contrl2
  1179.         move.w    #0,contrl3
  1180.         clr.w    contrl4
  1181.         move.w    #9,contrl5
  1182.  
  1183.         bsr    call_vdi
  1184.  
  1185.                 move.l    RETURN,a0
  1186.                 jmp    (a0)
  1187.  
  1188. v_justified    move.l    (sp)+,RETURN
  1189.         cmpi    #7,d0
  1190.         bne    SYNTAX
  1191.  
  1192.         movem.l    (sp)+,d2-d4   * charflag
  1193.         tst.b    d2
  1194.         bne    TYPEMIS
  1195.         move.w    d3,intin+2
  1196.  
  1197.         movem.l    (sp)+,d2-d4   * wordflag
  1198.         tst.b    d2
  1199.         bne    TYPEMIS
  1200.         move.w    d3,intin
  1201.  
  1202.         movem.l    (sp)+,d2-d4   * length
  1203.         tst.b    d2
  1204.         bne    TYPEMIS
  1205.         move.w    d3,ptsin+4
  1206.  
  1207.         movem.l    (sp)+,d2-d4   * text (address)
  1208.         tst.b    d2
  1209.         bne    TYPEMIS
  1210.         move.w    d3,contrl3
  1211.  
  1212.         movem.l    (sp)+,d2-d4   * y
  1213.         tst.b    d2
  1214.         bne    TYPEMIS
  1215.         move.w    d3,ptsin+2
  1216.  
  1217.         movem.l    (sp)+,d2-d4   * x
  1218.         tst.b    d2
  1219.         bne    TYPEMIS
  1220.         move.w    d3,ptsin
  1221.  
  1222.         movem.l    (sp)+,d2-d4   * handle
  1223.         tst.b    d2
  1224.         bne    TYPEMIS
  1225.         move.w    d3,contrl6
  1226.  
  1227.         clr.w    ptsin+6
  1228.  
  1229.         move.w    #11,contrl
  1230.         move.w    #2,contrl1
  1231.         clr.w    contrl2
  1232.         clr.w    contrl4
  1233.         move.w    #10,contrl5
  1234.  
  1235.         bsr    call_vdi
  1236.  
  1237.                 move.l    RETURN,a0
  1238.                 jmp    (a0)
  1239.  
  1240. vswr_mode    move.l    (sp)+,RETURN
  1241.         cmpi    #2,d0
  1242.         bne    SYNTAX
  1243.  
  1244.         movem.l    (sp)+,d2-d4   * mode
  1245.         tst.b    d2
  1246.         bne    TYPEMIS
  1247.         move.w    d3,intin
  1248.  
  1249.         movem.l    (sp)+,d2-d4   * handle
  1250.         tst.b    d2
  1251.         bne    TYPEMIS
  1252.         move.w    d3,contrl6
  1253.  
  1254.         move.w    #32,contrl
  1255.         move.w    #0,contrl1
  1256.         clr.w    contrl2
  1257.         move.w    #1,contrl3
  1258.         clr.w    contrl4
  1259.         move.w    #1,contrl5
  1260.  
  1261.         bsr    call_vdi
  1262.  
  1263.         move.w    intout,d3
  1264.  
  1265.                 move.l    RETURN,a0
  1266.                 jmp    (a0)
  1267.  
  1268. vs_color    move.l    (sp)+,RETURN
  1269.         cmpi    #5,d0
  1270.         bne    SYNTAX
  1271.  
  1272.         movem.l    (sp)+,d2-d4   * b
  1273.         tst.b    d2
  1274.         bne    TYPEMIS
  1275.         move.w    d3,intin+6
  1276.  
  1277.         movem.l    (sp)+,d2-d4   * g
  1278.         tst.b    d2
  1279.         bne    TYPEMIS
  1280.         move.w    d3,intin+4
  1281.  
  1282.         movem.l    (sp)+,d2-d4   * r
  1283.         tst.b    d2
  1284.         bne    TYPEMIS
  1285.         move.w    d3,intin+2
  1286.  
  1287.         movem.l    (sp)+,d2-d4   * index
  1288.         tst.b    d2
  1289.         bne    TYPEMIS
  1290.         move.w    d3,intin
  1291.  
  1292.         movem.l    (sp)+,d2-d4   * handle
  1293.         tst.b    d2
  1294.         bne    TYPEMIS
  1295.         move.w    d3,contrl6
  1296.  
  1297.         move.w    #14,contrl
  1298.         move.w    #0,contrl1
  1299.         clr.w    contrl2
  1300.         move.w    #4,contrl3
  1301.         clr.w    contrl4
  1302.         move.w    #1,contrl5
  1303.  
  1304.         bsr    call_vdi
  1305.  
  1306.                 move.l    RETURN,a0
  1307.                 jmp    (a0)
  1308.  
  1309. vsl_type    move.l    (sp)+,RETURN
  1310.         cmpi    #2,d0
  1311.         bne    SYNTAX
  1312.  
  1313.         movem.l    (sp)+,d2-d4   * type
  1314.         tst.b    d2
  1315.         bne    TYPEMIS
  1316.         move.w    d3,intin
  1317.  
  1318.         movem.l    (sp)+,d2-d4   * handle
  1319.         tst.b    d2
  1320.         bne    TYPEMIS
  1321.         move.w    d3,contrl6
  1322.  
  1323.         move.w    #15,contrl
  1324.         move.w    #0,contrl1
  1325.         clr.w    contrl2
  1326.         move.w    #1,contrl3
  1327.         clr.w    contrl4
  1328.         move.w    #0,contrl5
  1329.  
  1330.         bsr    call_vdi
  1331.  
  1332.                 move.l    RETURN,a0
  1333.                 jmp    (a0)
  1334.  
  1335. vsl_color    move.l    (sp)+,RETURN
  1336.         cmpi    #2,d0
  1337.         bne    SYNTAX
  1338.  
  1339.         movem.l    (sp)+,d2-d4   * colour
  1340.         tst.b    d2
  1341.         bne    TYPEMIS
  1342.         move.w    d3,intin
  1343.  
  1344.         movem.l    (sp)+,d2-d4   * handle
  1345.         tst.b    d2
  1346.         bne    TYPEMIS
  1347.         move.w    d3,contrl6
  1348.  
  1349.         move.w    #17,contrl
  1350.         move.w    #0,contrl1
  1351.         clr.w    contrl2
  1352.         move.w    #1,contrl3
  1353.         clr.w    contrl4
  1354.         clr.w    contrl5
  1355.  
  1356.         bsr    call_vdi
  1357.  
  1358.                 move.l    RETURN,a0
  1359.                 jmp    (a0)
  1360.  
  1361. vsl_ends    move.l    (sp)+,RETURN
  1362.         cmpi    #3,d0
  1363.         bne    SYNTAX
  1364.  
  1365.         movem.l    (sp)+,d2-d4   * endstyle
  1366.         tst.b    d2
  1367.         bne    TYPEMIS
  1368.         move.w    d3,intin+2
  1369.  
  1370.         movem.l    (sp)+,d2-d4   * beginstyle
  1371.         tst.b    d2
  1372.         bne    TYPEMIS
  1373.         move.w    d3,intin
  1374.  
  1375.         movem.l    (sp)+,d2-d4   * handle
  1376.         tst.b    d2
  1377.         bne    TYPEMIS
  1378.         move.w    d3,contrl6
  1379.  
  1380.         move.w    #108,contrl
  1381.         move.w    #0,contrl1
  1382.         clr.w    contrl2
  1383.         move.w    #2,contrl3
  1384.         clr.w    contrl4
  1385.         clr.w    contrl5
  1386.  
  1387.         bsr    call_vdi
  1388.  
  1389.                 move.l    RETURN,a0
  1390.                 jmp    (a0)
  1391.  
  1392. v_opnwk        move.l    (sp)+,RETURN
  1393.         cmpi    #0,d0
  1394.         bne    SYNTAX
  1395.  
  1396.         move.w    #1,contrl
  1397.         clr.w    contrl1
  1398.         clr.w    contrl2
  1399.         move.w    #11,contrl3
  1400.         clr.w    contrl4
  1401.         clr.w    contrl5
  1402.         clr.w    contrl6
  1403.  
  1404.         bsr    call_vdi
  1405.  
  1406.         move.w    contrl6,d3
  1407.  
  1408.         move.l    RETURN,a0
  1409.         jmp    (a0)
  1410.  
  1411. v_pline        move.l    (sp)+,RETURN
  1412.         cmpi    #3,d0
  1413.         bne    SYNTAX
  1414.  
  1415.         movem.l    (sp)+,d2-d4   * pts()
  1416.         tst.b    d2
  1417.         bne    TYPEMIS
  1418.         move.w    d3,a4
  1419.  
  1420.         movem.l    (sp)+,d2-d4   * number
  1421.         tst.b    d2
  1422.         bne    TYPEMIS
  1423.         move.w    d3,contrl1
  1424.  
  1425.         lea    ptsin,a3
  1426.  
  1427. copy:        move.w    (a4)+,(a3)+
  1428.         dbf    d3,copy
  1429.  
  1430.         movem.l    (sp)+,d2-d4   * handle
  1431.         tst.b    d2
  1432.         bne    TYPEMIS
  1433.         move.w    d3,contrl6
  1434.  
  1435.         move.w    #6,contrl
  1436.         clr.w    contrl2
  1437.         move.w    #0,contrl3
  1438.         clr.w    contrl4
  1439.         clr.w    contrl5
  1440.  
  1441.         bsr    call_vdi
  1442.  
  1443.         move.l    RETURN,a0
  1444.         jmp    (a0)
  1445.  
  1446. vsl_udsty    move.l    (sp)+,RETURN
  1447.         cmpi    #2,d0
  1448.         bne    SYNTAX
  1449.  
  1450.         movem.l    (sp)+,d2-d4    * pattern
  1451.         tst.b    d2
  1452.         bne    TYPEMIS
  1453.         move.w    d3,intin
  1454.  
  1455.         movem.l    (sp)+,d2-d4    * handle
  1456.         tst.b    d2
  1457.         bne    TYPEMIS
  1458.         move.w    d3,contrl6
  1459.  
  1460.         move.w    #113,contrl
  1461.         move.w    #0,contrl1
  1462.         move.w    #0,contrl2
  1463.         move.w    #1,contrl3
  1464.         clr.w    contrl4
  1465.         clr.w    contrl5
  1466.  
  1467.         bsr    call_vdi
  1468.  
  1469.         move.l    RETURN,a0
  1470.         jmp    (a0)
  1471.  
  1472. vsl_width    move.l    (sp)+,RETURN
  1473.         cmpi    #2,d0
  1474.         bne    SYNTAX
  1475.  
  1476.         movem.l    (sp)+,d2-d4    * width
  1477.         tst.b    d2
  1478.         bne    TYPEMIS
  1479.         move.w    d3,ptsin
  1480.  
  1481.         move.w    #0,ptsin+2
  1482.  
  1483.         movem.l    (sp)+,d2-d4    * handle
  1484.         tst.b    d2
  1485.         bne    TYPEMIS
  1486.         move.w    d3,contrl6
  1487.  
  1488.         move.w    #16,contrl
  1489.         move.w    #1,contrl1
  1490.         move.w    #0,contrl2
  1491.         move.w    #0,contrl3
  1492.         clr.w    contrl4
  1493.         clr.w    contrl5
  1494.  
  1495.         bsr    call_vdi
  1496.  
  1497.         move.l    RETURN,a0
  1498.         jmp    (a0)
  1499.  
  1500. vsm_type    move.l    (sp)+,RETURN
  1501.         cmpi    #2,d0
  1502.         bne    SYNTAX
  1503.  
  1504.         movem.l    (sp)+,d2-d4    * type
  1505.         tst.b    d2
  1506.         bne    TYPEMIS
  1507.         move.w    d3,intin
  1508.  
  1509.         movem.l    (sp)+,d2-d4    * handle
  1510.         tst.b    d2
  1511.         bne    TYPEMIS
  1512.         move.w    d3,contrl6
  1513.  
  1514.         move.w    #18,contrl
  1515.         move.w    #0,contrl1
  1516.         move.w    #0,contrl2
  1517.         move.w    #1,contrl3
  1518.         clr.w    contrl4
  1519.         clr.w    contrl5
  1520.  
  1521.         bsr    call_vdi
  1522.  
  1523.         move.l    RETURN,a0
  1524.         jmp    (a0)
  1525.  
  1526. vsm_height    move.l    (sp)+,RETURN
  1527.         cmpi    #2,d0
  1528.         bne    SYNTAX
  1529.  
  1530.         movem.l    (sp)+,d2-d4    * height
  1531.         tst.b    d2
  1532.         bne    TYPEMIS
  1533.         move.w    d3,ptsin+2
  1534.  
  1535.         move.w    #0,ptsin
  1536.  
  1537.         movem.l    (sp)+,d2-d4    * handle
  1538.         tst.b    d2
  1539.         bne    TYPEMIS
  1540.         move.w    d3,contrl6
  1541.  
  1542.         move.w    #19,contrl
  1543.         move.w    #0,contrl1
  1544.         move.w    #0,contrl2
  1545.         move.w    #1,contrl3
  1546.         clr.w    contrl4
  1547.         clr.w    contrl5
  1548.  
  1549.         bsr    call_vdi
  1550.  
  1551.         move.l    RETURN,a0
  1552.         jmp    (a0)
  1553.  
  1554. vst_height    move.l    (sp)+,RETURN
  1555.         cmpi    #2,d0
  1556.         bne    SYNTAX
  1557.  
  1558.         movem.l    (sp)+,d2-d4    * height
  1559.         tst.b    d2
  1560.         bne    TYPEMIS
  1561.         move.w    d3,ptsin+2
  1562.  
  1563.         move.w    #0,ptsin
  1564.  
  1565.         movem.l    (sp)+,d2-d4    * handle
  1566.         tst.b    d2
  1567.         bne    TYPEMIS
  1568.         move.w    d3,contrl6
  1569.  
  1570.         move.w    #12,contrl
  1571.         move.w    #1,contrl1
  1572.         move.w    #0,contrl2
  1573.         move.w    #0,contrl3
  1574.         clr.w    contrl4
  1575.         clr.w    contrl5
  1576.  
  1577.         bsr    call_vdi
  1578.  
  1579.         move.l    RETURN,a0
  1580.         jmp    (a0)
  1581.  
  1582. vst_rotation    move.l    (sp)+,RETURN
  1583.         cmpi    #2,d0
  1584.         bne    SYNTAX
  1585.  
  1586.         movem.l    (sp)+,d2-d4    * angle
  1587.         tst.b    d2
  1588.         bne    TYPEMIS
  1589.         move.w    d3,intin
  1590.  
  1591.         movem.l    (sp)+,d2-d4    * handle
  1592.         tst.b    d2
  1593.         bne    TYPEMIS
  1594.         move.w    d3,contrl6
  1595.  
  1596.         move.w    #13,contrl
  1597.         move.w    #0,contrl1
  1598.         move.w    #0,contrl2
  1599.         move.w    #1,contrl3
  1600.         clr.w    contrl4
  1601.         clr.w    contrl5
  1602.  
  1603.         bsr    call_vdi
  1604.  
  1605.         move.l    RETURN,a0
  1606.         jmp    (a0)
  1607.  
  1608. vst_effects    move.l    (sp)+,RETURN
  1609.         cmpi    #2,d0
  1610.         bne    SYNTAX
  1611.  
  1612.         movem.l    (sp)+,d2-d4    * effects
  1613.         tst.b    d2
  1614.         bne    TYPEMIS
  1615.         move.w    d3,intin
  1616.  
  1617.         movem.l    (sp)+,d2-d4    * handle
  1618.         tst.b    d2
  1619.         bne    TYPEMIS
  1620.         move.w    d3,contrl6
  1621.  
  1622.         move.w    #106,contrl
  1623.         move.w    #0,contrl1
  1624.         move.w    #0,contrl2
  1625.         move.w    #1,contrl3
  1626.         clr.w    contrl4
  1627.         clr.w    contrl5
  1628.  
  1629.         bsr    call_vdi
  1630.  
  1631.         move.l    RETURN,a0
  1632.         jmp    (a0)
  1633.  
  1634. vst_alignment    move.l    (sp)+,RETURN
  1635.         cmpi    #3,d0
  1636.         bne    SYNTAX
  1637.  
  1638.         movem.l    (sp)+,d2-d4    * vertical
  1639.         tst.b    d2
  1640.         bne    TYPEMIS
  1641.         move.w    d3,intin+2
  1642.  
  1643.         movem.l    (sp)+,d2-d4    * horizontal
  1644.         tst.b    d2
  1645.         bne    TYPEMIS
  1646.         move.w    d3,intin
  1647.  
  1648.         movem.l    (sp)+,d2-d4    * handle
  1649.         tst.b    d2
  1650.         bne    TYPEMIS
  1651.         move.w    d3,contrl6
  1652.  
  1653.         move.w    #39,contrl
  1654.         move.w    #0,contrl1
  1655.         move.w    #0,contrl2
  1656.         move.w    #2,contrl3
  1657.         clr.w    contrl4
  1658.         clr.w    contrl5
  1659.  
  1660.         bsr    call_vdi
  1661.  
  1662.         move.l    RETURN,a0
  1663.         jmp    (a0)
  1664.  
  1665. vsf_style    move.l    (sp)+,RETURN
  1666.         cmpi    #2,d0
  1667.         bne    SYNTAX
  1668.  
  1669.         movem.l    (sp)+,d2-d4    * style_index
  1670.         tst.b    d2
  1671.         bne    TYPEMIS
  1672.         move.w    d3,intin
  1673.  
  1674.         movem.l    (sp)+,d2-d4    * handle
  1675.         tst.b    d2
  1676.         bne    TYPEMIS
  1677.         move.w    d3,contrl6
  1678.  
  1679.         move.w    #24,contrl
  1680.         move.w    #0,contrl1
  1681.         move.w    #0,contrl2
  1682.         move.w    #1,contrl3
  1683.         clr.w    contrl4
  1684.         clr.w    contrl5
  1685.  
  1686.         bsr    call_vdi
  1687.  
  1688.         move.l    RETURN,a0
  1689.         jmp    (a0)
  1690.  
  1691. vsf_perimeter    move.l    (sp)+,RETURN
  1692.         cmpi    #2,d0
  1693.         bne    SYNTAX
  1694.  
  1695.         movem.l    (sp)+,d2-d4    * flag
  1696.         tst.b    d2
  1697.         bne    TYPEMIS
  1698.         move.w    d3,intin
  1699.  
  1700.         movem.l    (sp)+,d2-d4    * handle
  1701.         tst.b    d2
  1702.         bne    TYPEMIS
  1703.         move.w    d3,contrl6
  1704.  
  1705.         move.w    #104,contrl
  1706.         move.w    #0,contrl1
  1707.         move.w    #0,contrl2
  1708.         move.w    #1,contrl3
  1709.         clr.w    contrl4
  1710.         clr.w    contrl5
  1711.  
  1712.         bsr    call_vdi
  1713.  
  1714.         move.l    RETURN,a0
  1715.         jmp    (a0)
  1716.  
  1717. v_get_pixel    move.l    (sp)+,RETURN
  1718.         cmpi    #3,d0
  1719.         bne    SYNTAX
  1720.  
  1721.         move.l    a5,(mystore)
  1722.  
  1723.         movem.l    (sp)+,d2-d4    * value (varptr)
  1724.         tst.b    d2
  1725.         bne    TYPEMIS
  1726.         move.l    d3,a5
  1727.         move.l    a5,(gotclicks)
  1728. *        move.w    d3,intin
  1729.  
  1730.         movem.l    (sp)+,d2-d4    * y
  1731.         tst.b    d2
  1732.         bne    TYPEMIS
  1733.         move.w    d3,ptsin+2
  1734.  
  1735.         movem.l    (sp)+,d2-d4    * x
  1736.         tst.b    d2
  1737.         bne    TYPEMIS
  1738.         move.w    d3,ptsin
  1739.  
  1740.         movem.l    (sp)+,d2-d4    * handle
  1741.         tst.b    d2
  1742.         bne    TYPEMIS
  1743.         move.w    d3,contrl6
  1744.  
  1745.         move.w    #105,contrl
  1746.         move.w    #1,contrl1
  1747.         move.w    #0,contrl2
  1748.         move.w    #0,contrl3
  1749.         clr.w    contrl4
  1750.         clr.w    contrl5
  1751.  
  1752.         bsr    call_vdi
  1753.  
  1754.         move.l    (gotclicks),a5
  1755.         move.w    intout,2(a5)
  1756.  
  1757.         move.w    intout+2,d3
  1758.         move.w    #0,d2
  1759.  
  1760.         move.l    RETURN,a0
  1761.         jmp    (a0)
  1762.  
  1763. *************************
  1764. *
  1765. * Odds and sods...
  1766. *
  1767.  
  1768. dummy    move.l    (sp)+,RETURN
  1769.     bra    NOTDONE
  1770.  
  1771. SYNTAX    moveq    #12,d0
  1772.     move.l    SYSTEM,a0
  1773.     move.l    $14(a0),a0
  1774.     jsr    (a0)
  1775.  
  1776. TYPEMIS    moveq    #19,d0
  1777.     move.l    SYSTEM,a0
  1778.     move.l    $14(a0),a0
  1779.     jsr    (a0)
  1780.  
  1781. NOTDONE    moveq    #0,d0
  1782.     move.l    SYSTEM,a0
  1783.     move.l    $14(a0),a0
  1784.     jsr    (a0)
  1785.  
  1786. call_vdi
  1787.     move.l    #vdi_params,d1
  1788.     move.w    #$73,d0
  1789.     trap    #2
  1790.     rts
  1791.  
  1792. call_aes
  1793.     move.l    #aes,d1
  1794.     move.w    #$C8,d0
  1795.     trap    #2
  1796.     move.w    int_out,d0
  1797.     rts
  1798.  
  1799. *************************
  1800. *
  1801. * Data space...
  1802. *
  1803.  
  1804. * these don't need initialising...
  1805. dummyout    ds.l    1
  1806. control        ds.w    5
  1807. global        ds.w    14
  1808. int_in        ds.w    16
  1809. int_out        ds.w    7
  1810. addr_in        ds.l    3
  1811. addr_out    ds.l    1
  1812. gemma        dc.b    0,4,"1.52"
  1813.  
  1814. *the VDI parameters
  1815.  
  1816. current_handle    ds.w    1
  1817.  
  1818. contrl        ds.w    1
  1819. contrl1        ds.w    1
  1820. contrl2        ds.w    1
  1821. contrl3        ds.w    1
  1822. contrl4        ds.w    1
  1823. contrl5        ds.w    1
  1824. contrl6        ds.w    1
  1825. contrl7        ds.w    1
  1826. contrl8        ds.w    1
  1827. contrl9        ds.w    1
  1828. contrl10    ds.w    1
  1829. contrl11    ds.w    1
  1830.  
  1831. intin        ds.w    128
  1832. intout        ds.w    128
  1833. ptsin        ds.w    128
  1834. ptsout        ds.w    128
  1835.  
  1836. global2        ds.w    14
  1837.  
  1838. dataspace    ds.w    17
  1839.  
  1840. vdi_params    dc.l    contrl,intin,ptsin,intout,ptsout
  1841. aes        dc.l    control,global2,int_in,int_out,addr_in,addr_out
  1842.  
  1843.  
  1844.  
  1845. mystore        ds.l    1
  1846. x_out        ds.l    1
  1847. y_out        ds.l    1
  1848. w_out        ds.l    1
  1849. h_out        ds.l    1
  1850. button        ds.l    1
  1851. kstate        ds.l    1
  1852. key_pressed    ds.l    1
  1853. gotclicks    ds.l    1
  1854. addr        ds.l    1
  1855. oldsp        ds.l    1
  1856. newsp        ds.l    1
  1857.  
  1858.  
  1859. END