home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / util / cli / cliutils_mra.lha / Sources / RequestModeID.a < prev    next >
Encoding:
Text File  |  1998-09-02  |  3.2 KB  |  191 lines

  1. ;
  2. ; RequestModeID 39.1
  3. ; written by Mauro Panigada
  4. ;
  5. ; $VER: RequestModeID.a 39.1 (1998.07.23) by Mauro Panigada
  6. ;
  7. ; What it does:
  8. ; Write to standard output the hex value of the choosen mode id, through
  9. ; asl screen mode requester.
  10. ;
  11. ; Requirements: OS3.0 (39), 68020+
  12. ;
  13.  
  14.         incdir    "inc:"
  15.         include    "exec/types.i"
  16.         include    "exec/libraries.i"
  17.         include    "exec/execbase.i"
  18.         include    "exec/exec_lib.i"
  19.         include    "dos/dos.i"
  20.         include    "dos/dos_lib.i"
  21.         include    "libraries/asl.i"
  22.         include    "libraries/asl_lib.i"
  23.         include    "intuition/intuition_lib.i"
  24.  
  25.  
  26. LIBVERSION    EQU    39
  27.  
  28. SPACE        MACRO
  29.         dc.b    " "
  30.         ENDM
  31. PROG_NAME    MACRO
  32.         dc.b    "RequestModeID"
  33.         SPACE
  34.         ENDM
  35. PROG_VERSION    MACRO
  36.         dc.b    "39.1"
  37.         SPACE
  38.         ENDM
  39. PROG_DATE    MACRO
  40.         dc.b    "(1998.07.23)"
  41.         ENDM
  42. PROG_AUTHOR    MACRO
  43.         SPACE
  44.         dc.b    "by Mauro Panigada"
  45.         ENDM
  46.  
  47. CALL        MACRO
  48.         jsr    (_LVO\1,a6)
  49.         ENDM
  50.  
  51.  
  52.  
  53.         opt    p=68020
  54.  
  55.     SECTION    Main,CODE
  56.  
  57.         bra.s    Start
  58.  
  59.         dc.b    "$VER: "
  60.         PROG_NAME
  61.         PROG_VERSION
  62.         PROG_DATE
  63.         PROG_AUTHOR
  64.         dc.b    13,10,0
  65.         even
  66.  
  67. Start
  68.         move.l    (4).w,a6
  69.         move.w    (AttnFlags,a6),d0
  70.         and.w    #AFF_68020,d0        ; almeno il 68020!
  71.         bne.s    Ok68020P
  72.         moveq    #RETURN_ERROR,d0
  73.         rts
  74.  
  75. Ok68020P
  76.         moveq    #RETURN_FAIL,d7        ;d7=retunr code
  77.  
  78.         suba.l    a3,a3
  79.  
  80.         lea    (DOSName,pc),a1
  81.         moveq    #LIB_VERSION,d0
  82.         CALL    OpenLibrary
  83.         move.l    d0,d6            ;d6=dosbase
  84.         beq    Main_Exit0
  85.  
  86.         lea    (AslName,pc),a1
  87.         moveq    #LIBVERSION,d0
  88.         CALL    OpenLibrary
  89.         move.l    d0,d5            ;d5=aslbase
  90.         beq    Main_Exit1
  91.  
  92.         lea    (IntuitionName,pc),a1
  93.         moveq    #LIBVERSION,d0
  94.         CALL    OpenLibrary
  95.         move.l    d0,a3
  96.         tst.l    d0
  97.         beq    Main_Exit1
  98.  
  99.         move.l    d6,a6
  100.         lea    (Template,pc),a0
  101.         move.l    a0,d1
  102.         clr.l    -(sp)
  103.         move.l    sp,d2
  104.         moveq    #0,d3
  105.         CALL    ReadArgs
  106.         move.l    d0,d4            ;d4=readargs
  107.         move.l    (sp)+,a4        ;a4=ptr a stringa nome pubscreen
  108. * ingora possibili errori: semplicemente fa come se non gli fosse stato passato
  109. * alcun argomento... (potrebbe esserci l'errore too many arguments o simile)
  110.  
  111.         moveq    #RETURN_ERROR,d7
  112.  
  113.         move.l    sp,a5
  114.         clr.l    -(sp)                ; TAG_END
  115.         tst.l    a4
  116.         beq.s    NoPubScreen
  117.         move.l    a4,-(sp)
  118.         move.l    #ASLSM_PubScreenName,-(sp)
  119.         move.l    a4,a0
  120.         move.l    a3,a6
  121.         CALL    LockPubScreen
  122.         tst.l    d0
  123.         beq.s    NoPubScreen
  124.         move.l    d0,a0
  125.         CALL    ScreenToFront
  126.         move.l    a4,a0
  127.         CALL    UnlockPubScreen
  128. NoPubScreen    lea    (DefTitle,pc),a0
  129.         move.l    a0,-(sp)
  130.         move.l    #ASLSM_TitleText,-(sp)
  131.         move.l    sp,a0
  132.         moveq    #ASL_ScreenModeRequest,d0
  133.         move.l    d5,a6
  134.         CALL    AllocAslRequest
  135.         move.l    a5,sp
  136.         move.l    d0,a5
  137.         tst.l    d0
  138.         beq    Main_Exit2
  139.  
  140.         moveq    #RETURN_WARN,d7
  141.         move.l    d0,a0
  142.         suba.l    a1,a1
  143.         CALL    AslRequest
  144.         tst.l    d0
  145.         beq.s    NullaFatto
  146.  
  147.         moveq    #RETURN_OK,d7
  148.  
  149.         move.l    (sm_DisplayID,a5),-(sp)
  150.         lea    (PFormat,pc),a0
  151.         move.l    a0,d1
  152.         move.l    sp,d2
  153.         move.l    d6,a6
  154.         CALL    VPrintf
  155.         addq.l    #4,sp
  156. NullaFatto
  157.         move.l    a5,a0
  158.         move.l    d5,a6
  159.         CALL    FreeAslRequest
  160.  
  161. Main_Exit2
  162.         move.l    d4,d1
  163.         beq.s    Main_Exit1
  164.         move.l    d6,a6
  165.         CALL    FreeArgs
  166.  
  167. Main_Exit1
  168.         move.l    d5,a1
  169.         move.l    (4).w,a6
  170.         CALL    CloseLibrary
  171.         move.l    d6,a1
  172.         CALL    CloseLibrary
  173.         move.l    a3,a1
  174.         CALL    CloseLibrary
  175. Main_Exit0
  176.         move.l    d7,d0
  177.         rts
  178.  
  179.  
  180. ;=======================================
  181.  
  182. DOSName        dc.b    "dos.library",0
  183. AslName        dc.b    "asl.library",0
  184. IntuitionName    dc.b    "intuition.library",0
  185. Template    dc.b    "PUBSCREEN/K",0
  186. PFormat        dc.b    "0x%08.lx",10,0
  187. DefTitle    dc.b    "Select Screen Mode",0
  188.  
  189.  
  190.         END
  191.