home *** CD-ROM | disk | FTP | other *** search
/ Millennium Time Capsule / AC2000.BIN / disks / ac9_disk / g172src / gemma-i2.s < prev    next >
Encoding:
Text File  |  1997-12-15  |  27.2 KB  |  1,564 lines

  1. *************************************************
  2. *
  3. * GEMMA Extension for STOS, interpreter version.
  4. *
  5. * AES extension, v1.50 Part 2
  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.EXE
  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    "wind_new",128        * 1
  42.     dc.b    "rsrc_load",129
  43.     dc.b    "rsrc_free",130
  44.     dc.b    "rsrc_gaddr",131
  45.     dc.b    "rsrc_saddr",132
  46.     dc.b    "rsrc_rcfix",133    * 5
  47.     dc.b    "rsrc_obfix",134
  48.  
  49.     dc.b    "shel_write",135
  50.     dc.b    "shel_read",136
  51.     dc.b    "shel_get",137
  52.     dc.b    "shel_put",138        * 10
  53.     dc.b    "shel_find",139
  54.     dc.b    "shel_envrn",140
  55.     dc.b    "appl_getinfo",141
  56.     dc.b    "fsel_input",142
  57.     dc.b    "gemmaver$",143        * 15
  58.     dc.b    "fsel_exinput",144
  59.     dc.b    "dummygemma4",145
  60.     dc.b    "frm_center",146
  61.     dc.b    "global",147
  62.     dc.b    "dummygemma5",148    * 20
  63.     dc.b    "pexec",149
  64.     dc.b    "initgemma",150
  65.     dc.b    "gemsys",151        * 23
  66.     dc.b    "storeinit",152
  67.     dc.b    "dummygemma6",153
  68.     dc.b    "initstos",154
  69.     dc.b    "init_appl",155
  70.     dc.b    "exitsys",156
  71.     dc.b    "command$",157
  72.  
  73. * The end of the token list
  74.         dc.b    0
  75.  
  76.     even
  77.     
  78. * Now the jump table
  79.  
  80. JUMPS   dc.w   29        in order of token, starting from 128
  81.     dc.l    wind_new    * 1
  82.     dc.l    rsrc_load
  83.     dc.l    rsrc_free
  84.     dc.l    rsrc_gaddr
  85.     dc.l    rsrc_saddr
  86.     dc.l    rsrc_rcfix    * 5
  87.     dc.l    rsrc_obfix
  88.     dc.l    shel_write
  89.     dc.l    shel_read
  90.     dc.l    shel_get
  91.     dc.l    shel_put    * 10
  92.     dc.l    shel_find
  93.     dc.l    shel_envrn
  94.     dc.l    appl_getinfo
  95.     dc.l    fsel_input
  96.     dc.l    gemmaver    * 15
  97.     dc.l    fsel_exinput
  98.     dc.l    dummy
  99.     dc.l    form_center
  100.     dc.l    gb
  101.     dc.l    dummy        * 20
  102.     dc.l    pexec
  103.     dc.l    initgemma
  104.     dc.l    gemsys        * 23
  105.     dc.l    storeinit
  106.     dc.l    dummy
  107.     dc.l    initstos
  108.     dc.l    initappl
  109.     dc.l    exitsystem
  110.     dc.l    command
  111.  
  112. * macro to call a given AES routine
  113. aes    macro    aes_number
  114.     move    #\1,d0
  115.     lea    control,a1
  116.     move.w    d0,(a1)+            store the op code
  117.     sub.w    #10,d0
  118.     mulu    #3,d0            size is the priority, not speed
  119.     lea    gem_ctrl_list,a0
  120.     add.w    d0,a0            points to the entry
  121.     moveq    #0,d0
  122.     move.b    (a0)+,d0
  123.     move.w    d0,(a1)+        do control1
  124.     move.b    (a0)+,d0
  125.     move.w    d0,(a1)+        and control2
  126.     move.b    (a0)+,d0
  127.     move.w    d0,(a1)+        and control3
  128.     clr.w    (a1)            assumes control4=0 (all except RSRC_GADDR)
  129.     move.l    #aes_params,d1
  130. *    move.l    d1,gbstore
  131.     move.w    #200,d0            function number
  132.     trap    #2
  133.  
  134.     moveq.l    #0,d2
  135.     move.l    d0,d3
  136.     move.w    int_out,d3        usually a returned value
  137.     endm
  138.  
  139.  
  140.  
  141. * The welcome mesages in English and French
  142.  
  143. WELCOME dc.b    10,13
  144.  
  145.     dc.b    10,13,"                          The GEMMA Extension v1.52"
  146.     dc.b    10,13,"                       (c) 1997 The GEMMA programming team"
  147.      dc.b    10,13,"                           AES routines installed.",10,13,0
  148.  
  149.     dc.b    10,13,"                          le Extension GEMMA v1.52"
  150.     dc.b    10,13,"                     (c) 1997 Le GEMMA programming team"
  151.      dc.b    10,13,"                        routines de AES installes.",10,13,0
  152.         even
  153.  
  154. * Some system variables
  155.  
  156. RETURN        dc.l    0
  157. SYSTEM        dc.l    0
  158. SYSSTORE    ds.l    0
  159.  
  160. * The routine that is called on start-up
  161.  
  162. INIT    move.l    a6,SYSSTORE    * address of GEMMAOS desktop info!!!
  163.     lea     END,a0
  164.         lea     COLDST,a1
  165.         rts
  166.  
  167. COLDST  move.l    a0,SYSTEM
  168.     lea     WELCOME,a0      ; vital stuff
  169.         lea     WARMST,a1
  170.         lea     TOKENS,a2
  171.         lea     JUMPS,a3
  172.         rts
  173.  
  174. * Executed on UNDO in editor
  175.  
  176. WARMST  rts
  177.  
  178.  
  179. *************************
  180. *
  181. * Our commands
  182. *
  183. *
  184.  
  185. * The AES commands --------------------------------------------
  186. wind_new    move.l    (sp)+,RETURN
  187.         tst.w    d0
  188.         bne    SYNTAX
  189.  
  190.         aes    109
  191.  
  192.         move.l    RETURN,a0
  193.         jmp    (a0)
  194.  
  195. rsrc_load    move.l    (sp)+,RETURN
  196.         cmpi.w    #1,d0
  197.         bne    SYNTAX
  198.  
  199.         movem.l    (sp)+,d2-d4   * file_name$
  200.         cmpi.b    #$80,d2
  201.         bne    TYPEMIS
  202.         addq.l    #2,d3
  203.         move.l    d3,addr_in
  204.  
  205.         aes    110
  206.         move.l    RETURN,a0
  207.         jmp    (a0)
  208.  
  209. rsrc_free    move.l    (sp)+,RETURN
  210.         tst.w    d0
  211.         bne    SYNTAX
  212.  
  213.         aes    111
  214.  
  215.         move.l    RETURN,a0
  216.         jmp    (a0)
  217.  
  218. rsrc_gaddr    move.l    (sp)+,RETURN
  219.         cmpi.w    #2,d0
  220.         bne    SYNTAX
  221.  
  222. *        movem.l    (sp)+,d2-d4   * addr&
  223. *        tst.b    d2
  224. *        bne    TYPEMIS
  225. *        move.l    d3,addr_in
  226.         
  227.         movem.l    (sp)+,d2-d4   * index
  228.         tst.b    d2
  229.         bne    TYPEMIS
  230.         move.w    d3,int_in+2
  231.  
  232.         movem.l    (sp)+,d2-d4   * type
  233.         tst.b    d2
  234.         bne    TYPEMIS
  235.         move.w    d3,int_in
  236.  
  237.         move.l    #112<<16+2,control
  238.         move.l    #1<<16,control+4
  239.         move.w    #1,control+8        unique!
  240.         move.l    #aes_params,d1
  241.         move.w    #200,d0
  242.         trap    #2
  243.         moveq.l    #0,d2
  244.         move.l    d2,d3
  245.         move.l    addr_out,d3
  246. *        move.l    (addr_out),(addr_in)
  247.  
  248.         move.l    RETURN,a0
  249.         jmp    (a0)
  250.  
  251. rsrc_saddr    move.l    (sp)+,RETURN
  252.         cmpi.w    #3,d0
  253.         bne    SYNTAX
  254.  
  255.         move.l    a5,(mystore)
  256.  
  257.         movem.l    (sp)+,d2-d4   * addr&
  258.         tst.b    d2
  259.         bne    TYPEMIS
  260.         move.l    a3,a5
  261.         move.l    a5,(addr)
  262.         move.l    a5,addr_in
  263.  
  264.         movem.l    (sp)+,d2-d4   * index
  265.         tst.b    d2
  266.         bne    TYPEMIS
  267.         move.w    d2,int_in+2
  268.  
  269.         movem.l    (sp)+,d2-d4   * type
  270.         tst.b    d2
  271.         bne    TYPEMIS
  272.         move.w    d1,int_in
  273.  
  274.         aes    113
  275.  
  276.         * addr
  277.         move.l    (addr),a5
  278.         move.l    addr_out,2(a5)
  279.  
  280.         move.l    (mystore),a5
  281.  
  282.  
  283.         move.l    RETURN,a0
  284.         jmp    (a0)
  285.  
  286. rsrc_obfix    move.l    (sp)+,RETURN
  287.         cmpi.w    #2,d0
  288.         bne    SYNTAX
  289.  
  290.         movem.l    (sp)+,d2-d4   * object
  291.         tst.b    d2
  292.         bne    TYPEMIS
  293.         move.w    d3,int_in
  294.  
  295.         movem.l    (sp)+,d2-d4   * tree&
  296.         tst.b    d2
  297.         bne    TYPEMIS
  298.         move.l    d3,addr_in
  299.  
  300.         aes    114
  301.         move.l    RETURN,a0
  302.         jmp    (a0)
  303.  
  304. rsrc_rcfix    move.l    (sp)+,RETURN
  305.         cmpi.w    #1,d0
  306.         bne    SYNTAX
  307.  
  308.         movem.l    (sp)+,d2-d4    * rc_header
  309.         tst.b    d2
  310.         bne    TYPEMIS
  311.         move.l    d3,addr_in
  312.  
  313.         aes    115
  314.  
  315.         move.l    RETURN,a0
  316.         jmp    (a0)
  317.  
  318. shel_read    move.l    (sp)+,RETURN
  319.         cmpi.w    #2,d0
  320.         bne    SYNTAX
  321.  
  322.         movem.l    (sp)+,d2-d4   * tail$
  323.         cmpi.b    #$80,d2
  324.         bne    TYPEMIS
  325.         addq.l    #2,d3
  326.         move.l    d3,addr_in+4
  327.  
  328.         movem.l    (sp)+,d2-d4   * cmd$
  329.         cmpi.b    #$80,d2
  330.         bne    TYPEMIS
  331.         addq.l    #2,d3
  332.         move.l    d3,addr_in
  333.  
  334.         aes    120
  335.         move.l    RETURN,a0
  336.         jmp    (a0)
  337.  
  338. shel_write    move.l    (sp)+,RETURN
  339.         cmpi.w    #5,d0
  340.         bne    SYNTAX
  341.  
  342.         movem.l    (sp)+,d2-d4   * commandline$
  343.         cmpi.b    #$80,d2
  344.         bne    TYPEMIS
  345.         addq.l    #2,d3
  346.         move.l    d3,addr_in+4
  347.  
  348.         movem.l    (sp)+,d2-d4   * commandname$
  349.         cmpi.b    #$80,d2                    
  350.         bne    TYPEMIS
  351.         addq.l    #2,d3
  352.         move.l    d3,addr_in
  353.  
  354.         movem.l    (sp)+,d2-d4   * over
  355.         tst.b    d2
  356.         bne    TYPEMIS
  357.         move.w    d3,int_in+4
  358.  
  359.         movem.l    (sp)+,d2-d4   * gr
  360.         tst.b    d2
  361.         bne    TYPEMIS
  362.         move.w    d3,int_in+2
  363.  
  364.         movem.l    (sp)+,d2-d4   * ex
  365.         tst.b    d2
  366.         bne    TYPEMIS
  367.         move.w    d3,int_in
  368.  
  369.         aes    121
  370.         move.l    RETURN,a0
  371.         jmp    (a0)
  372.  
  373. shel_get    move.l    (sp)+,RETURN
  374.         cmpi.w    #2,d0
  375.         bne    SYNTAX
  376.  
  377.         movem.l    (sp)+,d2-d4   * length
  378.         tst.b    d2
  379.         bne    TYPEMIS
  380.         move.w    d3,int_in
  381.  
  382.         movem.l    (sp)+,d2-d4   * buff&
  383.         cmpi.b    #$80,d2
  384.         bne    TYPEMIS
  385.         addq.l    #2,d3
  386.         move.l    d3,addr_in
  387.  
  388.         aes    122
  389.         move.l    RETURN,a0
  390.         jmp    (a0)
  391.  
  392. shel_put    move.l    (sp)+,RETURN
  393.         cmpi.w    #2,d0
  394.         bne    SYNTAX
  395.  
  396.         movem.l    (sp)+,d2-d4   * length
  397.         cmpi.b    #$80,d2
  398.         bne    TYPEMIS
  399.         addq.l    #2,d3
  400.         move.w    d3,int_in
  401.  
  402.         movem.l    (sp)+,d2-d4   * buff&
  403.         tst.b    d2
  404.         bne    TYPEMIS
  405.         move.l    d3,addr_in
  406.  
  407.         aes    123
  408.         move.l    RETURN,a0
  409.         jmp    (a0)
  410.  
  411. shel_find    move.l    (sp)+,RETURN
  412.         cmpi.w    #1,d0
  413.         bne    SYNTAX
  414.  
  415.         movem.l    (sp)+,d2-d4   * file$
  416.         cmpi.b    #$80,d2
  417.         bne    TYPEMIS
  418.         addq.l    #2,d3
  419.         move.l    d3,addr_in
  420.  
  421.         aes    124
  422.         move.l    RETURN,a0
  423.         jmp    (a0)
  424.  
  425. shel_envrn    move.l    (sp)+,RETURN
  426.         cmpi.w    #2,d0
  427.         bne    SYNTAX
  428.  
  429.         movem.l    (sp)+,d2-d4   * name$
  430.         tst.b    d2
  431.         bne    TYPEMIS
  432.         move.l    d3,addr_in+4
  433.  
  434.         movem.l    (sp)+,d2-d4   * env$
  435.         cmpi.b    #$80,d2
  436.         bne    TYPEMIS
  437.         addq.l    #2,d3
  438.         move.l    d3,addr_in
  439.  
  440.         aes    125
  441.         move.l    RETURN,a0
  442.         jmp    (a0)
  443.  
  444.  
  445. appl_getinfo    move.l    (sp)+,RETURN
  446.         cmpi.w    #5,d0
  447.         bne    SYNTAX
  448.  
  449.         move.l    a5,(mystore)
  450.  
  451.         movem.l    (sp)+,d2-d4   * ap_gtype
  452.         tst.b    d2
  453.         bne    TYPEMIS
  454.         move.w    d3,int_in+8
  455.  
  456.         movem.l    (sp)+,d2-d4   * ap_gtype1
  457.         tst.b    d2
  458.         bne    TYPEMIS
  459.         move.l    d3,a5
  460.         move.l    a5,(x_out)
  461.         move.w    2(a5),int_in+6
  462.  
  463.         movem.l    (sp)+,d2-d4   * ap_gtype2
  464.         tst.b    d2
  465.         bne    TYPEMIS
  466.         move.l    d3,a5
  467.         move.l    a5,(y_out)
  468.         move.l    2(a5),int_in+4
  469.  
  470.         movem.l    (sp)+,d2-d4   * ap_gtype3
  471.         tst.b    d2
  472.         bne    TYPEMIS
  473.         move.l    d3,a5
  474.         move.l    a5,(w_out)
  475.         move.w    2(a5),int_in+2
  476.  
  477.         movem.l    (sp)+,d2-d4   * ap_gtype4
  478.         tst.b    d2
  479.         bne    TYPEMIS
  480.         move.l    d3,a5
  481.         move.l    a5,(h_out)
  482.         move.l    2(a5),int_in
  483.  
  484.         aes    130
  485.  
  486.         * ap_gtype1
  487.         move.l    (x_out),a5
  488.         move.w    int_out+2,2(a5)
  489.  
  490.         * ap_gtype2
  491.         move.l    (y_out),a5
  492.         move.w    int_out+4,2(a5)
  493.  
  494.         * ap_gtype3
  495.         move.l    (w_out),a5
  496.         move.w    int_out+6,2(a5)
  497.  
  498.         * ap_gtype4
  499.         move.l    (h_out),a5
  500.         move.w    int_out+8,2(a5)
  501.  
  502.         move.l    (mystore),a5
  503.  
  504.         move.l    RETURN,a0
  505.         jmp    (a0)
  506.  
  507. gemmaver    move.l    (sp)+,RETURN
  508.         cmpi    #0,d0        test number of opperands
  509.         bne    SYNTAX
  510.  
  511.         move.l    #$80,d2        return value - d2=type
  512.         lea    gemma,a0
  513.         move.l    a0,d3        d3=pointer to string
  514.         clr.l    d4
  515.  
  516.         move.l    RETURN,a0
  517.         jmp    (a0)
  518.  
  519. operver        move.l    (sp)+,RETURN
  520.         cmpi    #0,d0
  521.         bne    SYNTAX
  522.  
  523.         move.l    ($4f2),sysbase        * Find OS base
  524.         moveq.l    #0,d2
  525.         move.l    (sysbase),a0
  526.         add.w    #2,a0
  527.         move.w    (a0),d3            * Return deek (OS+2)
  528.  
  529.         move.l    RETURN,a0
  530.         jmp    (a0)
  531.  
  532. *gem        move.l    (sp)+,RETURN
  533. *        cmpi    #0,d0
  534. *        bne    SYNTAX
  535.  
  536. *        move.l    ($4f2),a0
  537. *        add.w    #$14,a0
  538. *        move.l    (a0),mupb    * mupb
  539.  
  540. *        moveq.l    #0,d2
  541. *        move.l    mupb,a4
  542. *        move.l    (a4),d4
  543. *        cmp.l    #$87654321,d4
  544.  
  545. *        beq    yesgem
  546. *        bne    nogem
  547.  
  548. *        move.l    RETURN,a0
  549. *        jmp    (a0)
  550.  
  551. *yesgem        move.w    #1,d3
  552. *        move.l    RETURN,a0
  553. *        jmp    (a0)
  554. *        rts
  555. *nogem        move.w    #0,d3
  556. *        move.l    RETURN,a0
  557. *        jmp    (a0)
  558. *        rts
  559.  
  560. gb        move.l    (sp)+,RETURN
  561.         cmpi.w    #0,d0
  562.         bne    SYNTAX
  563.  
  564.         moveq.l    #0,d2
  565.         lea.l    global(pc),a0
  566.         move.l    a0,d3
  567.  
  568.         move.l    RETURN,a0
  569.         jmp    (a0)
  570.  
  571. initappl    move.l    (sp)+,RETURN
  572.         cmpi.w    #0,d0
  573.         bne    SYNTAX
  574.         
  575.         aes    10
  576.  
  577. * aes_version=PEEKW(PEEKL(GB+4))
  578.  
  579. *        move.l    #0,d2
  580. *        move.l    #aes_params,d3
  581.  
  582. *        lea.l    global,a0
  583. *        add.l    #4,a0
  584. *        
  585. *        move.l    (a0),a1
  586. *        move.w    (a1),d3
  587.  
  588.         lea.l    aes_params(pc),a0
  589. *        lea.l    global(pc),a0
  590.         move.l    a0,d3
  591.  
  592.         move.w    #0,d2
  593.  
  594.         move.l    RETURN,a0
  595.         jmp    (a0)
  596.  
  597. exitsystem    move.l    (sp)+,RETURN
  598.         cmp    #0,d0
  599.         bne    SYNTAX
  600.  
  601. * pterm
  602.  
  603.         move.l    SYSSTORE,a0
  604.         
  605.         move.l    #$8,a2
  606.         move.l    #100,d1
  607.         move.l    a0,a3
  608.         add.l    d1,a3
  609.  
  610. bit        move.l    (a3)+,(a2)+
  611.         cmp    #$28,a2
  612.         bne    bit
  613.  
  614.         move.l    (a3)+,$400
  615.         move.l    (a3)+,$404
  616.         move.l    (a3)+,$40C
  617.         
  618.         move.w    #0,-(sp)
  619.         move.w    #$4c,-(sp)
  620.         trap    #1
  621.  
  622.         move.l    RETURN,a0
  623.         jmp    (a0)
  624.  
  625. command        move.l    (sp)+,RETURN
  626.         cmp    #0,d0
  627.         bne    SYNTAX
  628.  
  629.         move.l    $4f2,a0
  630.         move.l    $28(a0),a1
  631.         move.l    (a1),a2        * basepage
  632.         
  633.         clr.l    d1
  634.         move.b    128(a2),d1
  635.         cmp    #0,d1
  636.         beq    .err
  637.  
  638.         clr.l    d2
  639.         
  640.         move.l    a1,a2
  641.         add.l    #129,a2
  642.         lea.l    file(pc),a3
  643.         move.w    d1,(a3)
  644.         add.l    #2,a3        * 0,x
  645. .cont        move.b    (a2)+,d2
  646.         move.b    d2,(a3)+
  647.         sub.b    #1,d1
  648.         cmp    #0,d1
  649.         bne    .cont
  650.  
  651.         lea.l    file(pc),a0
  652.         move.l    a0,d3
  653.         bra    .quit
  654.  
  655. .err        lea.l    file(pc),a0
  656.         move.w    #0,(a0)
  657.         move.l    a0,d3
  658.  
  659. .quit        move.l    #$80,d2
  660.                 
  661.         move.l    RETURN,a0
  662.         jmp    (a0)
  663.  
  664. pexec        move.l    (sp)+,RETURN
  665.         cmp    #4,d0
  666.         bne    SYNTAX
  667.  
  668.         movem.l    (sp)+,d2-d4    * environment string
  669.         cmpi.b    #0,d2
  670.         bne    TYPEMIS
  671.         move.l    d3,dump1
  672.  
  673.         movem.l    (sp)+,d2-d4    * commandline
  674.         cmpi.b    #0,d2
  675.         beq    TYPEMIS
  676.         move.l    d3,dump2
  677.  
  678.         movem.l    (sp)+,d2-d4    * filename
  679.         cmpi.b    #0,d2
  680.         beq    TYPEMIS
  681.         add.l    #2,d3
  682.         move.l    d3,dump3
  683.  
  684.         movem.l    (sp)+,d2-d4    * mode
  685.         cmpi.b    #0,d2
  686.         bne    TYPEMIS
  687.         move.w    d3,dump4
  688.  
  689.         move.l    dump1,-(sp)
  690.         move.l    dump2,a0
  691.  
  692. * get length of command line, then text. Skip 0 at front.
  693.  
  694.         add.l    #1,a0
  695.         move.l    a0,-(sp)
  696.         move.l    dump3,-(sp)
  697.         move.w    dump4,-(sp)
  698.         move.w    #$4b,-(sp)
  699.         trap    #1        * pexec
  700.         add.l    #16,sp
  701.  
  702.         move.l    d0,d3
  703.         move.l    #0,d2
  704.  
  705.         move.l    RETURN,a0
  706.         jmp    (a0)
  707.  
  708. gemsys        move.l    (sp)+,RETURN
  709.         cmp    #1,d0
  710.         bne    SYNTAX
  711.  
  712. * return the address of the pointer to gemsys in GEMMAOS!
  713.  
  714.         movem.l    (sp)+,d2-d4
  715.         tst.b    d2
  716.         bne    TYPEMIS
  717.  
  718.         mulu    #4,d3
  719.  
  720.         move.l    #0,d2
  721.         move.l    SYSSTORE,a0
  722.         add.l    d3,a0
  723.         move.l    (a0),d3
  724.  
  725.         move.l    RETURN,a0
  726.         jmp    (a0)
  727.  
  728. initgemma    move.l    (sp)+,RETURN
  729.         cmp    #0,d0
  730.         bne    SYNTAX
  731.         
  732. mysys1        move.l    SYSSTORE,a0
  733.         move.l    a0,-(sp)    * store a0
  734.         move.l    8(a0),-(sp)    * pointer to mouse routine
  735.  
  736.         lea.l    param,a1
  737.         move.w    #1,(a1)
  738.         move.l    a1,-(sp)    * pointer to mode handler
  739.         move.w    #1,-(sp)    * new mouse mode (relative)
  740.         move.w    #0,-(sp)    * initmous
  741.         trap    #14
  742.         add.l    #12,sp
  743.         move.l    (sp)+,a0
  744.  
  745.         move.l    $456,a1
  746.  
  747.         move.l    12(a0),(a1)    * restore VBL 1
  748.         move.l    a0,-(sp)
  749.         
  750. * now to set the mouse
  751.         move.l    #0,addr_in
  752.         move.w    #0,int_in
  753.  
  754.         aes    78
  755. * now to display the mouse
  756.  
  757.         move.w    #77,control    graf_handle
  758.         move.w    #0,control+2
  759.         move.w    #5,control+4
  760.         move.w    #0,control+6
  761.         move.w    #0,control+8
  762.         bsr    call_aes
  763.  
  764.         move.w    d0,current_handle
  765.  
  766.         move.w    #122,contrl
  767.         clr.w    contrl1
  768.         move.w    #1,contrl3
  769.         move.w    current_handle,contrl6
  770.         move.w    #0,intin
  771.         bsr    call_vdi
  772.  
  773.         move.l    (sp)+,a0
  774.  
  775.         move.l    56(a0),d0
  776.         cmp.l    #$30000,d0
  777.         bne    next1
  778.  
  779.         move.l    72(a0),$ff8260
  780.  
  781. * setscreen
  782.  
  783.         move.l    a0,-(sp)
  784.  
  785.         move.l    56(a0),d0
  786.         cmp.l    #$30000,d0
  787.         bne    next1
  788.  
  789. * Falcon only res change
  790.  
  791. next2        move.w    42(a0),-(sp)    * (vsetmode)+2
  792.         move.w    #3,-(sp)    * mode
  793.         move.l    48(a0),-(sp)    * phybase
  794.         move.l    44(a0),-(sp)    * logbase
  795.         move.w    #5,-(sp)    * vsetscreen
  796.         trap    #14
  797.         add.l    #14,sp
  798.         bra    next3
  799.  
  800. * pre Falcon bits:
  801.  
  802. next1
  803.         move.w    42(a0),-(sp)    * (vsetmode)+2
  804.         move.l    48(a0),-(sp)    * phybase
  805.         move.l    44(a0),-(sp)
  806.         move.w    #5,-(sp)
  807.         trap    #14
  808.         add.l    #12,sp
  809.  
  810. next3        move.l    (sp)+,a0
  811.         
  812.         move.w    54(a0),$ff8260
  813. *        move.l    72(a0),$ff8260
  814.  
  815.         move.l    RETURN,a0
  816.         jmp    (a0)
  817.  
  818. fsel_input    move.l    (sp)+,RETURN
  819.         cmpi.w    #3,d0
  820.         bne    SYNTAX
  821.  
  822.         move.l    a5,(mystore)
  823.  
  824.         movem.l    (sp)+,d2-d4   * ok (address!)
  825.         tst.b    d2
  826.         bne    TYPEMIS
  827.         move.l    d3,a5
  828.         move.l    a5,(x_out)
  829.         move.w    2(a5),int_in
  830.  
  831.         movem.l    (sp)+,d2-d4   * name$
  832.         cmpi.b    #$80,d2
  833.         bne    TYPEMIS
  834.         addq.l    #2,d3
  835.         move.l    d3,addr_in+4
  836.  
  837.         movem.l    (sp)+,d2-d4   * path$
  838.         cmpi.b    #$80,d2
  839.         bne    TYPEMIS
  840.         addq.l    #2,d3
  841.         move.l    d3,addr_in
  842.  
  843.         aes    90
  844.  
  845.         * ok
  846.         move.l    (x_out),a5
  847.         move.w    int_out+2,2(a5)
  848.  
  849.         move.l    (mystore),a5
  850.  
  851.         move.l    RETURN,a0
  852.         jmp    (a0)
  853.  
  854. fsel_exinput    move.l    (sp)+,RETURN
  855.         cmpi.w    #4,d0
  856.         bne    SYNTAX
  857.  
  858.         move.l    a5,(mystore)
  859.  
  860.         movem.l    (sp)+,d2-d4   * promt$
  861.         cmpi.b    #$80,d2
  862.         bne    TYPEMIS
  863.         addq.l    #2,d3
  864.         move.l    d3,addr_in+8
  865.  
  866.         movem.l    (sp)+,d2-d4   * ok
  867.         tst.b    d2
  868.         bne    TYPEMIS
  869.         move.l    d3,a5
  870.         move.l    a5,(x_out)
  871.         move.w    2(a5),int_in
  872.  
  873.         movem.l    (sp)+,d2-d4   * name$
  874.         cmpi.b    #$80,d2
  875.         bne    TYPEMIS
  876.         addq.l    #2,d3
  877.         move.l    d3,addr_in+4
  878.  
  879.         movem.l    (sp)+,d2-d4   * path$
  880.         cmpi.b    #$80,d2
  881.         bne    TYPEMIS
  882.         addq.l    #2,d3
  883.         move.l    d3,addr_in
  884.  
  885.         aes    91
  886.  
  887.         * ok
  888.         move.l    (x_out),a5
  889.         move.w    int_out+2,2(a5)
  890.  
  891.         move.l    (mystore),a5
  892.  
  893.         move.l    RETURN,a0
  894.         jmp    (a0)
  895.  
  896. form_center    move.l    (sp)+,RETURN
  897.         cmpi.w    #5,d0
  898.         bne    SYNTAX
  899.  
  900. * form_center tree&, x, y, w,h
  901.  
  902.         move.l    a5,(mystore)
  903.  
  904.         movem.l    (sp)+,d2-d4   * h
  905.         tst.b    d2
  906.         bne    TYPEMIS
  907.         move.l    d3,a5
  908.         move.l    a5,(h_out)
  909.         move.w    2(a5),int_in+6
  910.  
  911.         movem.l    (sp)+,d2-d4   * w
  912.         tst.b    d2
  913.         bne    TYPEMIS
  914.         move.l    d3,a5
  915.         move.l    a5,(w_out)
  916.         move.w    2(a5),int_in+4
  917.  
  918.         movem.l    (sp)+,d2-d4   * y
  919.         tst.b    d2
  920.         bne    TYPEMIS
  921.         move.l    d3,a5
  922.         move.l    a5,(y_out)
  923.         move.w    2(a5),int_in+2
  924.  
  925.         movem.l    (sp)+,d2-d4   * x
  926.         tst.b    d2
  927.         bne    TYPEMIS
  928.         move.l    d3,a5
  929.         move.l    a5,(x_out)
  930.         move.w    2(a5),int_in
  931.  
  932.         movem.l    (sp)+,d2-d4   * tree&
  933.         tst.b    d2
  934.         bne    TYPEMIS
  935.         move.l    d3,addr_in
  936.  
  937.         aes    54
  938.  
  939.         * h
  940.         move.l    (h_out),a5
  941.         move.w    int_out+8,2(a5)
  942.  
  943.         * w
  944.         move.l    (w_out),a5
  945.         move.w    int_out+6,2(a5)
  946.  
  947.         * y
  948.         move.l    (y_out),a5
  949.         move.w    int_out+4,2(a5)
  950.  
  951.         * x
  952.         move.l    (x_out),a5
  953.         move.w    int_out+2,2(a5)
  954.  
  955.         move.l    (mystore),a5
  956.  
  957.         move.l    RETURN,a0
  958.         jmp    (a0)
  959.  
  960. storeinit    move.l    (sp)+,RETURN
  961.         cmpi.w    #0,d0
  962.         bne    SYNTAX
  963.         
  964. * store old stuff!
  965.  
  966. *        pea    setit(pc)
  967. *        move.w    #$26,-(sp)
  968. *        trap    #$e
  969. *        add.l    #6,sp    
  970.  
  971.         bsr    setit
  972.         
  973.         move.l    RETURN,a0
  974.         jmp    (a0)
  975.  
  976. *******************
  977. *
  978. * Odds and sods...
  979. *
  980.  
  981. dummy    move.l    (sp)+,RETURN
  982.     bra    NOTDONE
  983.  
  984. SYNTAX    moveq    #12,d0
  985.     move.l    SYSTEM,a0
  986.     move.l    $14(a0),a0
  987.     jsr    (a0)
  988.  
  989. TYPEMIS    moveq    #19,d0
  990.     move.l    SYSTEM,a0
  991.     move.l    $14(a0),a0
  992.     jsr    (a0)
  993.  
  994. NOTDONE    moveq    #0,d0
  995.     move.l    SYSTEM,a0
  996.     move.l    $14(a0),a0
  997.     jsr    (a0)
  998.  
  999. call_vdi
  1000.     move.l    #vdi_params,d1
  1001.     move.w    #$73,d0
  1002.     trap    #2
  1003.     rts
  1004.  
  1005. call_aes
  1006.     move.l    #aes,d1
  1007.     move.w    #$C8,d0
  1008.     trap    #2
  1009.     move.w    int_out,d0
  1010.     rts
  1011.  
  1012. setit    lea    stosstore,a0
  1013.  
  1014.     move.l    a0,-(sp)
  1015.     move.w    #$22,-(sp)
  1016.     trap    #14
  1017.     add.l    #2,sp
  1018.  
  1019.     move.l    (sp)+,a0
  1020.  
  1021.     move.l    d0,72(a0)
  1022.     add.l    #16,d0            * kbdvbase+16
  1023.     move.l    d0,a1
  1024.     move.l    (a1),8(a0)
  1025.  
  1026.     move.l    $456,a1
  1027.  
  1028.     move.l    (a1)+,12(a0)        * VBL1
  1029.     move.l    (a1)+,16(a0)        *    2
  1030.     move.l    (a1)+,20(a0)        *    3
  1031.     move.l    (a1)+,24(a0)        *    4
  1032.     move.l    (a1)+,28(a0)        *    5
  1033.     move.l    (a1)+,32(a0)        *    6
  1034.     move.l    (a1)+,36(a0)        *    7
  1035.  
  1036.     move.l    a0,-(sp)
  1037.     move.w    #-1,-(sp)        * vsetmode -1
  1038.     move.w    #$58,-(sp)
  1039.     trap    #14
  1040.     add.l    #4,sp
  1041.     move.l    (sp)+,a0
  1042.  
  1043.     move.w    d0,40(a0)
  1044.  
  1045.     move.l    a0,-(sp)        * logbase
  1046.     move.w    #3,-(sp)
  1047.     trap    #14
  1048.     add.l    #2,sp
  1049.     move.l    (sp)+,a0
  1050.  
  1051.     move.l    d0,44(a0)
  1052.  
  1053.     move.l    a0,-(sp)
  1054.     move.w    #2,-(sp)        * physbase
  1055.     trap    #14
  1056.     add.l    #2,sp
  1057.     move.l    (sp)+,a0
  1058.  
  1059.     move.l    d0,48(a0)
  1060.  
  1061. *    move.l    #0,-(sp)
  1062. *    move.w    #$20,-(sp)
  1063. *    trap    #1
  1064. *    add.l    #6,sp
  1065.  
  1066.     move.l    ($44c),52(a0)        * SHIFTMD
  1067.  
  1068.     move.l    a0,-(sp)
  1069.  
  1070. ****
  1071. * get _MCH cookie
  1072.     move.l    $5a0,d0
  1073.     tst.l     d0
  1074.     beq.s     .nocook       No cookie jar = plain ST.
  1075.     move.l    d0,a0
  1076.     move.l    #'_VDO',d0
  1077.  
  1078. .nextcook
  1079.     tst       (a0)
  1080.     beq.s     .nocook       No _VDO cookie = plain ST.
  1081.     move.l    (a0)+,d1
  1082.     cmp.l     d0,d1
  1083.     beq.s     .fndcook
  1084.     addq.l    #4,a0
  1085.     bra.s     .nextcook
  1086.  
  1087. .fndcook
  1088.     lea       vdocook(pc),a6
  1089.     move.l    (a0),d0
  1090.     move.l    d0,(a6)
  1091. .nocook
  1092.  
  1093.     move.l    (sp)+,a0
  1094.  
  1095.     move.l    vdocook(pc),d0        * VDO type
  1096.     move.l    d0,56(a0)
  1097.  
  1098.     move.l    a0,-(sp)
  1099.     move.w    #4,-(sp)
  1100.     trap    #14
  1101.     add.l    #2,sp
  1102.     move.l    (sp)+,a0
  1103.  
  1104.     move.l    d0,60(a0)        * GETREZ
  1105.  
  1106.     move.l    ($ff8260),64(a0)    * ST SHIFT
  1107.  
  1108.     move.l    ($ff8266),68(a0)    * Falcon SPSHIFT
  1109.  
  1110.     move.l    a0,-(sp)
  1111.  
  1112. .savefv        lea    stosscrbuf(pc),a1
  1113.         move.l    #'FVD2',(a1)+    4 bytes header
  1114.         move.b    $ff8006,(a1)+    monitor type
  1115.         move.b    $ff820a,(a1)+    sync
  1116.         move.l    $ff820e,(a1)+    offset & vwrap
  1117.         move.w    $ff8266,(a1)+    spshift
  1118.         move.l    #$ff8282,a0    horizontal control registers
  1119. .loop1        move    (a0)+,(a1)+
  1120.         cmp.l    #$ff8292,a0
  1121.         bne    .loop1
  1122.         move.l    #$ff82a2,a0    vertical control registers
  1123. .loop2        move    (a0)+,(a1)+
  1124.         cmp.l    #$ff82ae,a0
  1125.         bne    .loop2
  1126.         move    $ff82c2,(a1)+    video control
  1127.         move    $ff82c0,(a1)+    video clock
  1128.         move.b    $ff8260,(a1)+    shifter resolution
  1129.         move.b    $ff820a,(a1)+    video sync mode
  1130. *        rts
  1131.  
  1132.     move.l    (sp)+,a0
  1133.  
  1134.     lea    stosscrbuf(pc),a1
  1135.     move.l    a1,72(a0)
  1136.  
  1137.  
  1138.  
  1139.  
  1140. *    movem.l    (sp)+,a0-a6/d0-d6    * restore registers
  1141.  
  1142. *    pea    gemosalert1(pc)
  1143. *    move.w    #$13C,-(sp)
  1144. *    trap    #1
  1145. *    addq.l    #6,sp
  1146.  
  1147.     rts
  1148.  
  1149. initstos    move.l    (sp)+,RETURN
  1150.         cmp    #0,d0
  1151.         bne    SYNTAX
  1152.         
  1153. *        movem.l    (sp)+,d2-d4
  1154. *        tst    d2
  1155. *        bne    TYPEMIS
  1156.  
  1157. *        move.l    d3,dstore
  1158.         
  1159. *        tst    d3
  1160. *        beq    mysys1
  1161. *        move.l    stosstore,a0
  1162. *        bsr    mysys2
  1163.         
  1164.         lea.l    stosstore,a0
  1165.         move.l    a0,-(sp)    * store a0
  1166.         move.l    8(a0),-(sp)    * pointer to mouse routine
  1167.  
  1168.         lea.l    param,a1
  1169.         move.w    #1,(a1)
  1170.         move.l    a1,-(sp)    * pointer to mode handler
  1171.         move.w    #1,-(sp)    * new mouse mode (relative)
  1172.         move.w    #0,-(sp)    * initmous
  1173.         trap    #14
  1174.         add.l    #12,sp
  1175.         move.l    (sp)+,a0
  1176.  
  1177.         move.l    $456,a1
  1178.  
  1179.         move.l    12(a0),(a1)    * restore VBL 1
  1180.  
  1181.         move.l    a0,a2
  1182.         add.l    #72,a0
  1183.         
  1184.         move.l    (a0),a0
  1185.  
  1186.         lea    stosscrbuf(pc),a0        
  1187.  
  1188. @setfv        cmp.l    #'FVD2',(a0)+    4 bytes header
  1189. *        bne    .error
  1190.         
  1191. .ready        addq.l    #2,a0
  1192.         move.l    $70,-(sp)
  1193.         move    sr,-(sp)
  1194.         move.l    #.vbl,$70
  1195.         move    #$2300,sr
  1196.         
  1197.         move.l    $466,d0
  1198. .wait        cmp.l    $466,d0
  1199.         beq    .wait
  1200.         
  1201.         move.l    (a0)+,$ff820e    offset & vwrap
  1202.         move.w    (a0)+,$ff8266    spshift
  1203.         move.l    #$ff8282,a1    horizontal control registers
  1204. .loop1        move    (a0)+,(a1)+
  1205.         cmp.l    #$ff8292,a1
  1206.         bne    .loop1
  1207.         move.l    #$ff82a2,a1    vertical control registers
  1208. .loop2        move    (a0)+,(a1)+
  1209.         cmp.l    #$ff82ae,a1
  1210.         bne    .loop2
  1211.         move    (a0)+,$ff82c2    video control
  1212.         move    (a0)+,$ff82c0    video clock
  1213.         addq.l    #1,a0
  1214.         move.b    (a0)+,$ff820a    video sync mode
  1215.         move    (sp)+,sr
  1216.         move.l    (sp)+,$70
  1217.         moveq    #0,d0
  1218.         bra    .cont
  1219. *.error        moveq    #-1,d0
  1220. *        rts
  1221. *.wrongmon    moveq    #-2,d0
  1222. *        rts
  1223. *.sm124        cmp.b    #0,(a0)
  1224. *        bne    .wrongmon
  1225. *        bra    .ready
  1226. *.vga        cmp.b    #2,(a0)
  1227. *        bne    .wrongmon
  1228. *        bra    .ready
  1229. .vbl        addq.l    #1,$466
  1230.         rte
  1231.  
  1232. .cont        move.l    a2,a0
  1233. * setscreen
  1234.         
  1235.         move.w    42(a0),-(sp)    * (vsetmode)+2
  1236.         move.w    #3,-(sp)    * mode
  1237.         move.l    48(a0),-(sp)    * phybase
  1238.         move.l    44(a0),-(sp)    * logbase
  1239.         move.w    #5,-(sp)    * vsetscreen
  1240.         trap    #14
  1241.         add.l    #14,sp
  1242.         
  1243. *        move.w    54(a0),$ff8260
  1244.  
  1245.         move.l    RETURN,a0
  1246.         jmp    (a0)
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264. *
  1265. * SETFV.S
  1266. *
  1267. *    @setfv
  1268. *     Sets the falcon video registers. The data that is
  1269. *     written to the video registers must be a .FV (Falcon Video)
  1270. *     file. Supervisor only.
  1271. * In     a0.l=adr. to Falcon Video data
  1272. * Out     d0.l: 0=no error  -1=error, no FV data  -2=error, wrong monitor (not used yet)
  1273. *     (destroys a0-a1)
  1274. *
  1275. *    @savefv
  1276. *     Saves the falcon video registers to memory. Supervisor only.
  1277. *     (destroys a0-a1)
  1278. *
  1279. *    @resorefv
  1280. *     Restores the saved falcon video registers. Supervisor only.
  1281. *     (destroys a0-a1)
  1282. *
  1283.  
  1284.  
  1285. .setfv2        cmp.l    #'FVD2',(a0)+    4 bytes header
  1286.         bne    .error2
  1287.         
  1288. .ready2        addq.l    #2,a0
  1289.         move.l    $70,-(sp)
  1290.         move    sr,-(sp)
  1291.         move.l    #.vbl2,$70
  1292.         move    #$2300,sr
  1293.         
  1294.         move.l    $466,d0
  1295. .wait2        cmp.l    $466,d0
  1296.         beq    .wait2
  1297.         
  1298.         move.l    (a0)+,$ff820e    offset & vwrap
  1299.         move.w    (a0)+,$ff8266    spshift
  1300.         move.l    #$ff8282,a1    horizontal control registers
  1301. .loop3        move    (a0)+,(a1)+
  1302.         cmp.l    #$ff8292,a1
  1303.         bne    .loop3
  1304.         move.l    #$ff82a2,a1    vertical control registers
  1305. .loop4        move    (a0)+,(a1)+
  1306.         cmp.l    #$ff82ae,a1
  1307.         bne    .loop4
  1308.         move    (a0)+,$ff82c2    video control
  1309.         move    (a0)+,$ff82c0    video clock
  1310.         addq.l    #1,a0
  1311.         move.b    (a0)+,$ff820a    video sync mode
  1312.         move    (sp)+,sr
  1313.         move.l    (sp)+,$70
  1314.         moveq    #0,d0
  1315.         rts
  1316. .error2        moveq    #-1,d0
  1317.         rts
  1318. .wrongmon2    moveq    #-2,d0
  1319.         rts
  1320. .sm1242        cmp.b    #0,(a0)
  1321.         bne    .wrongmon2
  1322.         bra    .ready2
  1323. .vga2        cmp.b    #2,(a0)
  1324.         bne    .wrongmon2
  1325.         bra    .ready2
  1326. .vbl2        addq.l    #1,$466
  1327.         rte
  1328.         
  1329.  
  1330. @savefv        lea    FVbuffer1298(pc),a1
  1331.         move.l    #'FVD2',(a1)+    4 bytes header
  1332.         move.b    $ff8006,(a1)+    monitor type
  1333.         move.b    $ff820a,(a1)+    sync
  1334.         move.l    $ff820e,(a1)+    offset & vwrap
  1335.         move.w    $ff8266,(a1)+    spshift
  1336.         move.l    #$ff8282,a0    horizontal control registers
  1337. .loop1        move    (a0)+,(a1)+
  1338.         cmp.l    #$ff8292,a0
  1339.         bne    .loop1
  1340.         move.l    #$ff82a2,a0    vertical control registers
  1341. .loop2        move    (a0)+,(a1)+
  1342.         cmp.l    #$ff82ae,a0
  1343.         bne    .loop2
  1344.         move    $ff82c2,(a1)+    video control
  1345.         move    $ff82c0,(a1)+    video clock
  1346.         move.b    $ff8260,(a1)+    shifter resolution
  1347.         move.b    $ff820a,(a1)+    video sync mode
  1348.         rts
  1349.         
  1350. @restorefv    lea    FVbuffer1298(pc),a0
  1351.         bsr    @setfv
  1352.         rts
  1353.  
  1354.  
  1355. FVbuffer1298    ds.w    24
  1356. vdocook        ds.l    1
  1357.  
  1358. *************************
  1359. *
  1360. * Data space...
  1361. *
  1362.  
  1363. even
  1364.  
  1365. file    ds.l    20
  1366.  
  1367. * this is a table of pointers to all the AES arrays
  1368. aes_params    dc.l    control,global,int_in,int_out,addr_in,addr_out
  1369.  
  1370. * this is the list of Control parameters for the AES calls
  1371. * contains control(1..3), comment is the function number
  1372. * (an asterisk indicates it is not defined)
  1373. gem_ctrl_list
  1374.     dc.b    0,1,0    10    appl_init
  1375.     dc.b    2,1,1    11    appl_read
  1376.     dc.b    2,1,1    12    appl_write
  1377.     dc.b    0,1,1    13    appl_find
  1378.     dc.b    2,1,1    14    appl_tplay
  1379.     dc.b    1,1,1    15    appl_record
  1380.     dc.b    0,0,0    16*
  1381.     dc.b    0,0,0    17*
  1382.     dc.b    1,3,1    18    appl_search (4.0)
  1383.     dc.b    0,1,0    19    appl_exit
  1384.     dc.b    0,1,0    20    evnt_keybd
  1385.     dc.b    3,5,0    21    evnt_button
  1386.     dc.b    5,5,0    22    evnt_mouse
  1387.     dc.b    0,1,1    23    evnt_mesag
  1388.     dc.b    2,1,0    24    evnt_timer
  1389.     dc.b    16,7,1    25    evnt_multi
  1390.     dc.b    2,1,0    26    evnt_dclick
  1391.     dc.b    0,0,0    27*
  1392.     dc.b    0,0,0    28*
  1393.     dc.b    0,0,0    29*
  1394.     dc.b    1,1,1    30    menu_bar
  1395.     dc.b    2,1,1    31    menu_icheck
  1396.     dc.b    2,1,1    32    menu_ienable
  1397.     dc.b    2,1,1    33    menu_tnormal
  1398.     dc.b    1,1,2    34    menu_text
  1399.     dc.b    1,1,1    35    menu_register
  1400.     dc.b    2,1,2    36    menu_popup (3.3)
  1401.     dc.b    2,1,2    37    menu_attach (3.3)
  1402.     dc.b    3,1,1    38    menu_istart (3.3)
  1403.     dc.b    1,1,1    39    menu_settings (3.3)
  1404.     dc.b    2,1,1    40    objc_add
  1405.     dc.b    1,1,1    41    objc_delete
  1406.     dc.b    6,1,1    42    objc_draw
  1407.     dc.b    4,1,1    43    objc_find
  1408.     dc.b    1,3,1    44    objc_offset
  1409.     dc.b    2,1,1    45    objc_order
  1410.     dc.b    4,2,1    46    objc_edit
  1411.     dc.b    8,1,1    47    objc_change
  1412.     dc.b    4,3,0    48    objc_sysvar
  1413.     dc.b    0,0,0    49*
  1414.     dc.b    1,1,1    50    form_do
  1415.     dc.b    9,1,0    51    form_dial
  1416.     dc.b    1,1,1    52    form_alert
  1417.     dc.b    1,1,0    53    form_error
  1418.     dc.b    0,5,1    54    form_center
  1419.     dc.b    3,3,1    55    form_keybd
  1420.     dc.b    2,2,1    56    form_button
  1421.     dc.b    0,0,0    57*
  1422.     dc.b    0,0,0    58*
  1423.     dc.b    0,0,0    59*
  1424.     dc.b    0,0,0    60*
  1425.     dc.b    0,0,0    61*
  1426.     dc.b    0,0,0    62*
  1427.     dc.b    0,0,0    63*
  1428.     dc.b    0,0,0    64*
  1429.     dc.b    0,0,0    65*
  1430.     dc.b    0,0,0    66*
  1431.     dc.b    0,0,0    67*
  1432.     dc.b    0,0,0    68*
  1433.     dc.b    0,0,0    69*
  1434.     dc.b    4,3,0    70    graf_rubberbox
  1435.     dc.b    8,3,0    71    graf_dragbox
  1436.     dc.b    6,1,0    72    graf_movebox
  1437.     dc.b    8,1,0    73    graf_growbox
  1438.     dc.b    8,1,0    74    graf_shrinkbox
  1439.     dc.b    4,1,1    75    graf_watchbox
  1440.     dc.b    3,1,1    76    graf_slidebox
  1441.     dc.b    0,5,0    77    graf_handle
  1442.     dc.b    1,1,1    78    graf_mouse
  1443.     dc.b    0,5,0    79    graf_mkstate
  1444.     dc.b    0,1,1    80    scrp_read
  1445.     dc.b    0,1,1    81    scrp_write
  1446.     dc.b    0,0,0    82*
  1447.     dc.b    0,0,0    83*
  1448.     dc.b    0,0,0    84*
  1449.     dc.b    0,0,0    85*
  1450.     dc.b    0,0,0    86*
  1451.     dc.b    0,0,0    87*
  1452.     dc.b    0,0,0    88*
  1453.     dc.b    0,0,0    89*
  1454.     dc.b    0,2,2    90    fsel_input
  1455.     dc.b    0,2,3    91    fsel_exinput
  1456.     dc.b    0,0,0    92*
  1457.     dc.b    0,0,0    93*
  1458.     dc.b    0,0,0    94*
  1459.     dc.b    0,0,0    95*
  1460.     dc.b    0,0,0    96*
  1461.     dc.b    0,0,0    97*
  1462.     dc.b    0,0,0    98*
  1463.     dc.b    0,0,0    99*
  1464.     dc.b    5,1,0    100    wind_create
  1465.     dc.b    5,1,0    101    wind_open
  1466.     dc.b    1,1,0    102    wind_close
  1467.     dc.b    1,1,0    103    wind_delete
  1468.     dc.b    2,5,0    104    wind_get
  1469.     dc.b    6,1,0    105    wind_set
  1470.     dc.b    2,1,0    106    wind_find
  1471.     dc.b    1,1,0    107    wind_update
  1472.     dc.b    6,5,0    108    wind_calc
  1473.     dc.b    0,0,0    109    wind_new
  1474.     dc.b    0,1,1    110    rsrc_load
  1475.     dc.b    0,1,0    111    rsrc_free
  1476.     dc.b    2,1,0    112 ** Control(4)=1 ** rsrc_gaddr
  1477.     dc.b    2,1,1    113    rsrc_saddr
  1478.     dc.b    1,1,1    114    rsrc_obfix
  1479.     dc.b    0,0,0    115    rsrc_rcfix (4.0)
  1480.     dc.b    0,0,0    116*
  1481.     dc.b    0,0,0    117*
  1482.     dc.b    0,0,0    118*
  1483.     dc.b    0,0,0    119*
  1484.     dc.b    0,1,2    120    shel_read
  1485.     dc.b    3,1,2    121    shel_write
  1486.     dc.b    1,1,1    122    shel_get
  1487.     dc.b    1,1,1    123    shel_put
  1488.     dc.b    0,1,1    124    shel_find
  1489.     dc.b    0,1,3    125    shel_envrn
  1490.     dc.b    0,0,0    126*
  1491.     dc.b    0,0,0    127*
  1492.     dc.b    0,0,0    128*
  1493.     dc.b    0,0,0    129*
  1494.     dc.b    1,5,0    130*    appl_getinfo (4.0)
  1495.  
  1496.     even
  1497.  
  1498. * these don't need initialising...
  1499. dummyout    ds.l    1
  1500. control        ds.w    5
  1501. global        ds.w    14
  1502. int_in        ds.w    16
  1503. int_out        ds.w    7
  1504. addr_in        ds.l    3
  1505. addr_out    ds.l    1
  1506. gemma        dc.b    0,4,"1.72"
  1507.  
  1508. *the VDI parameters
  1509.  
  1510. current_handle    ds.w    1
  1511.  
  1512. contrl        ds.w    1
  1513. contrl1        ds.w    1
  1514. contrl2        ds.w    1
  1515. contrl3        ds.w    1
  1516. contrl4        ds.w    1
  1517. contrl5        ds.w    1
  1518. contrl6        ds.w    1
  1519. contrl7        ds.w    1
  1520. contrl8        ds.w    1
  1521. contrl9        ds.w    1
  1522. contrl10    ds.w    1
  1523. contrl11    ds.w    1
  1524.  
  1525. intin        ds.w    128
  1526. intout        ds.w    128
  1527. ptsin        ds.w    128
  1528. ptsout        ds.w    128
  1529.  
  1530. global2        ds.w    14
  1531.  
  1532. vdi_params    dc.l    contrl,intin,ptsin,intout,ptsout
  1533. aes        dc.l    control,global2,int_in,int_out,addr_in,addr_out
  1534.  
  1535.  
  1536.  
  1537. mystore        ds.l    1
  1538. x_out        ds.l    1
  1539. y_out        ds.l    1
  1540. w_out        ds.l    1
  1541. h_out        ds.l    1
  1542. button        ds.l    1
  1543. kstate        ds.l    1
  1544. key_pressed    ds.l    1
  1545. gotclicks    ds.l    1
  1546. addr        ds.l    1
  1547. oldsp        ds.l    1
  1548. newsp        ds.l    1
  1549.  
  1550. sysbase        ds.l    1
  1551. mupb        ds.l    1
  1552.  
  1553. dump1        ds.w    1
  1554. dump2        ds.l    1
  1555. dump3        ds.l    1
  1556. dump4        ds.l    1
  1557.  
  1558. param        ds.l    4
  1559. stosstore    ds.l    100    * for storing pre-STOS stuff
  1560. stosscrbuf    ds.l    100
  1561. dstore        ds.l    1
  1562. gbstore        ds.l    1
  1563.  
  1564. END