home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / c / smlaes12 / smallaes.c < prev    next >
C/C++ Source or Header  |  1993-04-09  |  7KB  |  207 lines

  1. /* ------------------------------------------------------------------------- */
  2. /* ----- The smaller AES-Binding V1.2 --- (c) 1991-93 by Oliver Scheel ----- */
  3. /* ------------------------------------------------------------------------- */
  4. /* ----- SMALLAES.C -------------------------------------------------------- */
  5. /* ------------------------------------------------------------------------- */
  6.  
  7. /* ------------------------------------------------------------------------- */
  8. /* Dieses Binding ist Public Domain. Änderungen sind genau zu dokumentieren! */
  9. /* ------------------------------------------------------------------------- */
  10. /* This Binding is public domain. Changes have to be documented!         */
  11. /* ------------------------------------------------------------------------- */
  12. /*    Autor:    Oliver Scheel                             */
  13. /*        Rothehausstr. 28                         */
  14. /*        W-5000 Köln 30 (West-Geramny)                     */
  15. /*    Net:     Oliver_Scheel@k2.maus.de                     */
  16. /* ------------------------------------------------------------------------- */
  17.  
  18. #include <stdarg.h>
  19. #include <portab.h>
  20.  
  21. /* ------------------------------------------------------------------------- */
  22.  
  23. typedef struct
  24. {
  25.     WORD    *control;
  26.     WORD    *global;
  27.     WORD    *int_in;
  28.     WORD    *int_out;
  29.     LONG    *addr_in;
  30.     LONG    *addr_out;
  31. } AESPB;
  32.  
  33. WORD    control[5];
  34. WORD    global[15];
  35. WORD    int_in[16];
  36. WORD    int_out[7];
  37. LONG    addr_in[2];
  38. LONG    addr_out[1];
  39.  
  40. AESPB    aespb = {    control,
  41.             global,
  42.             int_in,
  43.             int_out,
  44.             addr_in,
  45.             addr_out };
  46.  
  47. UBYTE    ctrl_cnts[122][4] = {
  48.                 0, 1, 0, 0,    /* appl_init        */
  49.                     2, 1, 1, 0,    /* appl_read        */
  50.                     2, 1, 1, 0,    /* appl_write        */
  51.                 0, 1, 1, 0,    /* appl_find        */
  52.                 2, 1, 1, 0,    /* appl_tplay        */
  53.                 1, 1, 1, 0,    /* appl_trecord        */
  54.                 2, 1, 0, 0,    /* appl_bvset (GEM/2)    */
  55.                 0, 1, 0, 0,    /* appl_yield (GEM/2)    */
  56.                 1, 3, 1, 0,    /* appl_search (AES 4.0) */
  57.                 0, 1, 0, 0,    /* appl_exit        */
  58.                 0, 1, 0, 0,    /* evnt_keybd        */
  59.                 3, 5, 0, 0,    /* evnt_button        */
  60.                 5, 5, 0, 0,    /* evnt_mouse        */
  61.                 0, 1, 1, 0,    /* evnt_mesag        */
  62.                 2, 1, 0, 0,    /* evnt_timer        */
  63.                 16, 7, 1, 0,    /* evnt_multi        */
  64.                 2, 1, 0, 0,    /* evnt_dclicks        */
  65.                 0, 0, 0, 0,    /* AES 27        */
  66.                 0, 0, 0, 0,    /* AES 28        */
  67.                 0, 0, 0, 0,    /* AES 29        */
  68.                 1, 1, 1, 0,    /* menu_bar        */
  69.                 2, 1, 1, 0,    /* menu_icheck        */
  70.                 2, 1, 1, 0,    /* menu_ienable        */
  71.                 2, 1, 1, 0,    /* menu_tnormal        */
  72.                 1, 1, 2, 0,    /* menu_text        */
  73.                 1, 1, 1, 0,    /* menu_register    */
  74.                 2, 1, 2, 0,    /* menu_popup (AES 3.3) */
  75.                 2, 1, 2, 0,    /* menu_attach (AES 3.3) */
  76.                 3, 1, 1, 0,    /* menu_istart (AES 3.3) */
  77.                 1, 1, 1, 0,    /* menu_settings (AES 3.3) */
  78.                 2, 1, 1, 0,    /* objc_add        */
  79.                 1, 1, 1, 0,    /* objc_delete        */
  80.                   6, 1, 1, 0,    /* objc_draw        */
  81.                 4, 1, 1, 0,    /* objc_find        */
  82.                 1, 3, 1, 0,    /* objc_offset        */
  83.                 2, 1, 1, 0,    /* objc_order        */
  84.                 4, 2, 1, 0,    /* objc_edit        */
  85.                 8, 1, 1, 0,    /* objc_change        */
  86.                 4, 3, 0, 0,    /* objc_sysvar (AES 3.4) */
  87.                 0, 0, 0, 0,    /* AES 49        */
  88.                 1, 1, 1, 0,    /* form_do        */
  89.                 9, 1, 0, 0,    /* form_dial        */
  90.                 1, 1, 1, 0,    /* form_alert        */
  91.                 1, 1, 0, 0,    /* form_error        */
  92.                 0, 5, 1, 0,    /* form_center        */
  93.                 3, 3, 1, 0,    /* form_keybd        */
  94.                 2, 2, 1, 0,    /* form_button        */
  95.                 0, 0, 0, 0,    /* AES 57        */
  96.                 0, 0, 0, 0,    /* AES 58        */
  97.                 0, 0, 0, 0,    /* AES 59        */
  98.                 0, 0, 0, 0,    /* AES 60        */
  99.                 0, 0, 0, 0,    /* AES 61        */
  100.                 0, 0, 0, 0,    /* AES 62        */
  101.                 0, 0, 0, 0,    /* AES 63        */
  102.                 0, 0, 0, 0,    /* AES 64        */
  103.                 0, 0, 0, 0,    /* AES 65        */
  104.                 0, 0, 0, 0,    /* AES 66        */
  105.                 0, 0, 0, 0,    /* AES 67        */
  106.                 0, 0, 0, 0,    /* AES 68        */
  107.                 0, 0, 0, 0,    /* AES 69        */
  108.                 4, 3, 0, 0,    /* graf_rubberbox    */
  109.                 8, 3, 0, 0,    /* graf_dragbox        */
  110.                 6, 1, 0, 0,    /* graf_movebox        */
  111.                 8, 1, 0, 0,    /* graf_growbox        */
  112.                 8, 1, 0, 0,    /* graf_shrinkbox    */
  113.                 4, 1, 1, 0,    /* graf_watchbox    */
  114.                 3, 1, 1, 0,    /* graf_slidebox    */
  115.                 0, 5, 0, 0,    /* graf_handle        */
  116.                 1, 1, 1, 0,    /* graf_mouse        */
  117.                 0, 5, 0, 0,    /* graf_mkstate        */
  118.                 0, 1, 1, 0,    /* scrp_read        */
  119.                 0, 1, 1, 0,    /* scrp_write        */
  120.                 0, 1, 0, 0,    /* scrp_clear (GEM/2)    */
  121.                 0, 0, 0, 0,    /* AES 83        */
  122.                 0, 0, 0, 0,    /* AES 84        */
  123.                 0, 0, 0, 0,    /* AES 85        */
  124.                 0, 0, 0, 0,    /* AES 86        */
  125.                 0, 0, 0, 0,    /* AES 87        */
  126.                 0, 0, 0, 0,    /* AES 88        */
  127.                 0, 0, 0, 0,    /* AES 89        */
  128.                 0, 2, 2, 0,    /* fsel_input        */
  129.                 0, 2, 3, 0,    /* fsel_exinput (TOS 1.04) */
  130.                 0, 0, 0, 0,    /* AES 92        */
  131.                 0, 0, 0, 0,    /* AES 93        */
  132.                 0, 0, 0, 0,    /* AES 94        */
  133.                 0, 0, 0, 0,    /* AES 95        */
  134.                 0, 0, 0, 0,    /* AES 96        */
  135.                 0, 0, 0, 0,    /* AES 97        */
  136.                 0, 0, 0, 0,    /* AES 98        */
  137.                 0, 0, 0, 0,    /* AES 99        */
  138.                 5, 1, 0, 0,    /* wind_create        */
  139.                 5, 1, 0, 0,    /* wind_open        */
  140.                 1, 1, 0, 0,    /* wind_close        */
  141.                 1, 1, 0, 0,    /* wind_delete        */
  142.                 2, 5, 0, 0,    /* wind_get        */
  143.                 6, 1, 0, 0,    /* wind_set        */
  144.                 2, 1, 0, 0,    /* wind_find        */
  145.                 1, 1, 0, 0,    /* wind_update        */
  146.                 6, 5, 0, 0,    /* wind_calc        */
  147.                 0, 0, 0, 0,    /* wind_new (TOS 1.04)    */
  148.                 0, 1, 1, 0,    /* rsrc_load        */
  149.                 0, 1, 0, 0,    /* rsrc_free        */
  150.                 2, 1, 0, 1,    /* rsrc_gaddr        */
  151.                 2, 1, 1, 0,    /* rsrc_saddr        */
  152.                 1, 1, 1, 0,    /* rsrc_obfix        */
  153.                 0, 1, 1, 0,    /* rsrc_rcfix (AES 4.0)  */
  154.                 0, 0, 0, 0,    /* AES 116        */
  155.                 0, 0, 0, 0,    /* AES 117        */
  156.                 0, 0, 0, 0,    /* AES 118        */
  157.                 0, 0, 0, 0,    /* AES 119        */
  158.                 0, 1, 2, 0,    /* shel_read        */
  159.                 3, 1, 2, 0,    /* shel_write        */
  160.                 1, 1, 1, 0,    /* shel_get        */
  161.                 1, 1, 1, 0,    /* shel_put        */
  162.                 0, 1, 1, 0,    /* shel_find        */
  163.                 0, 1, 2, 0,    /* shel_envrn        */
  164.                 0, 1, 2, 0,    /* shel_rdef (GEM/2)    */
  165.                 0, 0, 2, 0,    /* shel_wdef (GEM/2)    */
  166.                 0, 0, 0, 0,    /* AES 128        */
  167.                 0, 0, 0, 0,    /* AES 129        */
  168.                 1, 5, 0, 0,    /* appl_getinfo (AES 4.0) */
  169.                 0, 0, 0, 0    /* AES 131    */
  170.                 };
  171.  
  172. /* ------------------------------------------------------------------------- */
  173.  
  174. VOID _crystal(AESPB *aesbpb);
  175.  
  176. /* ------------------------------------------------------------------------- */
  177. /* ----- AES - Call -------------------------------------------------------- */
  178. /* ------------------------------------------------------------------------- */
  179.  
  180. WORD aes(WORD args, ...)
  181. {
  182.     REG WORD     i;
  183.     UBYTE        *c;
  184.     va_list    vargs;
  185.  
  186.     va_start(vargs, args);
  187.     control[0] = args;
  188.     c = ctrl_cnts[args-10];
  189.     for(i = 1; i <= 4; )
  190.         control[i++] = *c++;
  191.     for(i = 0; i < control[1]; )
  192.         int_in[i++] = va_arg(vargs, WORD);
  193.     for(i = 0; i < control[3]; )
  194.         addr_in[i++] = va_arg(vargs, LONG);
  195.  
  196.     _crystal(&aespb);
  197.  
  198.     for(i = 1; i < control[2]; )
  199.         *(WORD *)(va_arg(vargs, LONG)) = int_out[i++];
  200.     for(i = 0; i < control[4]; )
  201.         *(LONG *)(va_arg(vargs, LONG)) = addr_out[i++];
  202.     va_end(vargs);
  203.     return(int_out[0]);
  204. }
  205.  
  206. /* ----- end of SMALLAES.C ------------------------------------------------- */
  207.