home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src1.dms / in.adf / Devpac / menu.asm < prev    next >
Encoding:
Assembly Source File  |  1991-12-12  |  10.4 KB  |  488 lines

  1.  
  2.  Section SharpCode,Code_C
  3. ANTALrader=4    ;Antal prgs att välja på. Ej mer än 10!
  4.    Incdir Asmdisk1:
  5.  
  6.         movem.l    d0-d7/a0-a6,-(sp)
  7.  
  8.        moveq    #0,D0
  9.        move.w    $dff002,D0
  10.        or.w    #$8000,D0
  11.        move.w    d0,dma
  12.        move.w    #$4000,$dff09A
  13.        move.w    $dff01E,base
  14.  
  15.        move.l    #NewCopper,$dff080
  16.        tst.w    $dff088
  17.        move.w    #$85e0,$dff096
  18.  
  19.         bsr    bild_Init
  20.         bsr    menu_Init
  21.         bsr    fade_Start
  22.         move.b    $dff00a,MOUSEold
  23.  
  24. Main:  
  25.                   cmp.b    #$ff,$dff006
  26.             bne.s    Main
  27. pal:            cmp.b    #$26,$dff006
  28.             bne.s    pal
  29.  
  30.             bsr         MoveHori
  31.             bsr         mouse_Start
  32.             bsr         fade_Start
  33.  
  34.             btst  #6,$bfe001
  35.             bne.s   Main
  36.  
  37.         move.l    #GFXname,A1
  38.        moveq    #0,d0
  39.        move.l    4,a6
  40.        jsr    -$0198(a6)
  41.        move.l    d0,a1
  42.        move.l    $0026(a1),$dff080
  43.        tst.w    $dff088
  44.        jsr    -$019e(a6)
  45.    
  46.        move.w    dma,$dff096
  47.        move.w    base,$dff09a
  48.     
  49.         movem.l    (sp)+,d0-d7/a0-a6
  50.  
  51.         jmp    load
  52.         rts
  53.  
  54. dma: dc.l 0
  55. base: dc.l 0
  56.  
  57. GFXname:    dc.b    "graphics.library",0,0
  58. even
  59. GFXbase: dc.l 0
  60.  
  61. OldCopper:    dc.l    0
  62. NewCopper:
  63. MENUcopper:
  64.  
  65. SPRITES:    dc.l    $01200000,$01220000,$01240000,$01260000
  66.         dc.l    $01280000,$012a0000,$012c0000,$012e0000
  67.         dc.l    $01300000,$01320000,$01340000,$01360000
  68.         dc.l    $01380000,$013a0000,$013c0000,$013e0000
  69.  
  70.         dc.w    $0180,$000,$0182,$cc7,$0184,$994,$0186,$771
  71.         dc.w    $0188,$440,$018a,$ccc,$018c,$999,$018e,$666
  72. SPRcols:    dc.w    $01a2,$000,$01aa,$000,$01b2,$000
  73.  
  74.         dc.w    $008e,$2c81,$0090,$2cc1
  75.         dc.w    $0092,$0038,$0094,$00d0
  76.         dc.w    $0100,$0200,$0102,$0000,$0104,$0000
  77.         dc.w    $0108,2*40,$010a,2*40
  78.  
  79. LOGObitPs:    dc.w    $00e0,$0000,$00e2,$0000
  80.         dc.w    $00e4,$0000,$00e6,$0000
  81.         dc.w    $00e8,$0000,$00ea,$0000
  82.  
  83.         dc.w    $5b11,$fffe,$0100,$0200
  84.  
  85.         dc.w    $6211,$fffe  ;,$0180,$00f
  86. HoriLine:
  87.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  88.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  89.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  90.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  91.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  92.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  93.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  94.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  95.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  96.     dc.l    $01800000
  97.  
  98.  
  99.         dc.w    $6311,$fffe,$0180,$000
  100.  
  101.         dc.w     $0182,$aaa,$0184,$666,$0186,$444
  102.  
  103.         dc.w    $0108,40,$010a,40
  104.  
  105. TEXTbitPs:    dc.w    $00e0,$0000,$00e2,$0000
  106.         dc.w    $00e4,$0000,$00e6,$0000
  107.  
  108.         dc.w    $6601,$fffe,$0100,$2200
  109.  
  110. TEXTcolors:
  111. A set $8411
  112.         Rept    10
  113.         dc.w    A,$fffe,$0182,$aaa,$0184,$666,$0186,$444
  114. A set A+$0a00
  115.         Endr
  116.  
  117.         dc.w    A,$fffe,$0100,$0200
  118.  
  119.         dc.w    $e911,$fffe   ;,$0180,$00f
  120. HoriLine2:
  121.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  122.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  123.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  124.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  125.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  126.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  127.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  128.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  129.     dc.l    $01800000,$01800000,$01800000,$01800000,$01800000,$01800000
  130.     dc.l    $01800000
  131.  
  132.  
  133.         dc.w    $ea11,$fffe,$0180,$000
  134.  
  135.         dc.w    $0182,$007,$0184,$00a,$0186
  136.         dc.w    $00a,$0108,0,$010a,0,$0102,$0004
  137.         dc.w    $008e,$2c85,$0090,$2cc1
  138.  
  139. BitPlanes:    dc.w    $00e0,$0000,$00e2,$0000
  140.         dc.w    $00e4,$0000,$00e6,$0000
  141.  
  142.  
  143.         dc.w    $2c11,$fffe,$0100,$0200
  144.  
  145.         dc.w    $ffff,$fffe
  146.  
  147. MoveHori:    move.l    #LinePointers,a1
  148.         move.l    #HoriLine+2+53*4,a2
  149.         move.l    #53-1,d7
  150. Loopen:        move.l    #Farger,a0
  151.         add.w    (a1),a0
  152.         cmp.w    #99,(a0)
  153.         bne.S    Pullover
  154.         move.l    #Farger,a0
  155.         clr.w    (a1)+
  156.         bra.S    Muffen
  157. Pullover:    addq.w    #2,(a1)+
  158.         move.w    (a0),(a2)
  159. Muffen:        subq    #4,a2
  160.         dbra    d7,Loopen
  161.  
  162. MoveHori2:    move.l    #LinePointers2,a1
  163.         move.l    #HoriLine2+2,a2
  164.         move.l    #53-1,d7
  165. Loopen2:    move.l    #Farger,a0
  166.         add.w    (a1),a0
  167.         cmp.w    #99,(a0)
  168.         bne.S    Pullover2
  169.         move.l    #Farger,a0
  170.         clr.w    (a1)+
  171.         bra.S    Muffen2
  172. Pullover2:    addq.w    #2,(a1)+
  173.         move.w    (a0),(a2)
  174. Muffen2:    addq    #4,a2
  175.         dbra    d7,Loopen2
  176.         rts
  177.  
  178. ;--------------------------------------------------------------------
  179. ;---                  The Horizontal Line Shit              ---
  180. ;--------------------------------------------------------------------
  181.  
  182. LinePointers:    dc.w    2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
  183.         dc.w    32,34,36,38,40,42,44,46,48,50,52,54,56,58
  184.         dc.w    60,62,64,66,68,70,72,74,76,78,80,82,84,86
  185.         dc.w    88,90,92,94,96,98,100,102,104,106,108,110
  186.         dc.w    112,114,116
  187.  
  188. LinePointers2:    dc.w    2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
  189.         dc.w    32,34,36,38,40,42,44,46,48,50,52,54,56,58
  190.         dc.w    60,62,64,66,68,70,72,74,76,78,80,82,84,86
  191.         dc.w    88,90,92,94,96,98,100,102,104,106,108,110
  192.         dc.w    112,114,116
  193.  
  194. Farger:        
  195.  
  196.     dc.w    $100,$200,$300,$400,$500,$600,$700,$800,$900,$a00
  197.     dc.w    $b00,$c00,$d00,$e00,$f00
  198.     dc.w    $e00,$d00,$c00,$b00,$a00,$900,$800,$700,$600,$500
  199.     dc.w    $400,$300,$200,$100,$000
  200.     dc.w    $001,$002,$003,$004,$005,$006,$007,$008,$009,$00a
  201.     dc.w    $00b,$00c,$00d,$00e,$00f
  202.     dc.w    $00e,$00d,$00c,$00b,$00a,$009,$008,$007,$006,$005
  203.     dc.w    $004,$003,$002,$001,$000
  204.     dc.w    $101,$202,$303,$404,$505,$606,$707,$808,$909,$a0a
  205.     dc.w    $b0b,$c0c,$d0d,$e0e,$f0f
  206.     dc.w    $e0e,$d0d,$c0c,$b0b,$a0a,$909,$808,$707,$606,$505
  207.     dc.w    $404,$303,$202,$101,$000
  208.  
  209.     dc.w    99
  210.  
  211.  
  212.  
  213. bild_Init:    move.l    #BILD,d0
  214.         move.w    d0,TEXTbitPs+6
  215.         swap    d0
  216.         move.w    d0,TEXTbitPs+2
  217.         move.l    #BILD+40,d0
  218.         move.w    d0,TEXTbitPs+14
  219.         swap    d0
  220.         move.w    d0,TEXTbitPs+10
  221.                         rts
  222.  
  223. menu_Init:    move.l    #$ffffffff,$dff044
  224.         move.l    #$00260000,$dff060
  225.         move.l    #$00000026,$dff064
  226.  
  227.         lea    BILD,a0
  228.         lea    MENUtext,a1
  229.         moveq.l    #13-1,d7    ;Y-led
  230. menu_Loop0:    moveq.l    #0,d6        ;X-led
  231. menu_Loop1:    moveq.l    #0,d2
  232.         move.b    (a1)+,d2
  233.         sub.b    #32,d2
  234.         lsl.w    #5,d2
  235.         add.l    #CSET21,d2
  236.         move.l    d6,d0
  237.         move.l    d0,d1
  238.         lsr.w    #4,d0
  239.         add.w    d0,d0
  240.         and.w    #$f,d1
  241.         ror.w    #4,d1
  242.         add.w    #$0b5a,d1
  243.         lea    (a0,d0.l),a2
  244.         clr.w    $dff042
  245.         move.w    d1,$dff040
  246.         move.l    a2,$dff048
  247.         move.l    d2,$dff050
  248.         move.l    a2,$dff054
  249.         move.w    #$40*8*2+1,$dff058
  250.  
  251. menu_Wait0:    btst    #6,$dff002
  252.         bne.s    menu_Wait0
  253.  
  254.         addq.l    #8,d6
  255.         cmp.l    #320,d6
  256.         bne.s    menu_Loop1
  257.         add.l    #40*10*2,a0
  258.         dbf    d7,menu_Loop0
  259.         
  260.         rts
  261.  
  262. mouse_Start:    lea    dest,a0
  263.         moveq.l    #0,d0
  264.         move.b    MOUSEpos,d0
  265.         divu    #10,d0
  266.         and.l    #$ffff,d0
  267.         mulu    #6,d0
  268.         add.l    d0,a0
  269.         move.w    #$017,0(a0)
  270.         move.w    #$015,2(a0)
  271.         move.w    #$004,4(a0)
  272.  
  273.         move.b    $dff00a,d0
  274.         cmp.b    MOUSEold,d0
  275.         beq.s    mouse_Next
  276.         blt.s    mouse_Less
  277.         addq.b    #2,MOUSEpos
  278.         cmp.b    #(ANTALrader*10),MOUSEpos
  279.         bne.s    mouse_Next
  280.         move.b    #0,MOUSEpos
  281.         bra.s    mouse_Next
  282. mouse_Less:    subq.b    #2,MOUSEpos
  283.         cmp.b    #-2,MOUSEpos
  284.         bne.s    mouse_Next
  285.         move.b    #(ANTALrader*10)-2,MOUSEpos
  286. mouse_Next:    move.b    d0,MOUSEold
  287.         lea    dest,a0
  288.         lea    grund,a1
  289.         moveq.l    #0,d0
  290.         move.b    MOUSEpos,d0
  291.         divu    #10,d0
  292.         and.l    #$ffff,d0
  293.         mulu    #6,d0
  294.         add.l    d0,a0
  295.         add.l    d0,a1
  296.         move.w    #$46f,0(a0)
  297.         move.w    #$24d,2(a0)
  298.         move.w    #$13b,4(a0)
  299.         move.w    #$46f,0(a1)
  300.         move.w    #$24d,2(a1)
  301.         move.w    #$13b,4(a1)
  302.  
  303. mouse_End:    rts
  304.  
  305. MOUSEold:    dc.b    0,0
  306. MOUSEpos:    dc.b    0,0
  307.  
  308. fade_Start:    move.l    tal,d0
  309.  
  310. fade_Loop1:    move.l    #(ANTALrader*3)-1,d1
  311.         clr.l    d5
  312.         move.l    #grund,a0
  313.  
  314. fade_Loop3:    move.l    #$0000000f,d2
  315.         rol.w    d0,d2
  316.         move.l    #compare,a1
  317.         moveq    #1,d3
  318.  
  319. fade_Loop2:    move.w    (a0,d5),d4
  320.         and.w    d2,d4
  321.         ror.w    d0,d4
  322.         move.l    #dest,a0
  323.         move.w    d4,(a1)+
  324.         dbra    d3,fade_Loop2
  325.  
  326.         move.l    #grund,a0
  327.         subq.l    #4,a1
  328.         move.w    (a1),d3
  329.         cmp.w    2(a1),d3
  330.         beq    fade_End
  331.         blt    fade_Next1
  332.         subq.w    #1,d3
  333.         bra    fade_End
  334.  
  335. fade_Next1:    addq.w    #1,d3
  336.  
  337. fade_End:    rol.w    d0,d3
  338.         eor.w    #$ffff,d2
  339.         and.w    d2,(a0,d5)
  340.         or.w    d3,(a0,d5)
  341.         addq.l    #2,d5
  342.         dbra    d1,fade_Loop3
  343.         subq.l    #4,d0
  344.         move.l    d0,tal
  345.         cmp.l    #-4,d0
  346.         bne    fade_Norre
  347.  
  348.         move.l    #8,tal
  349.  
  350.         move.l    #ANTALrader-1,d7
  351.         move.l    #grund,a0
  352.         move.l    #TEXTcolors,a1
  353.  
  354. fade_Lpous:    move.w    (a0)+,06(a1)
  355.         move.w    (a0)+,10(a1)
  356.         move.w    (a0)+,14(a1)
  357.  
  358.         add.l    #16,a1
  359.         dbf    d7,fade_Lpous
  360.  
  361. fade_Norre:    rts
  362.  
  363. tal:        dc.l    8
  364. compare:    dc.w    0,0
  365.  
  366. grund:
  367.         Rept    ANTALrader
  368.         dc.w    $017,$015,$004
  369.         Endr
  370. dest:
  371.         Rept    ANTALrader
  372.         dc.w    $017,$015,$004
  373.         Endr
  374.  
  375. CSET21:    
  376.     incbin    "Binary/C21"
  377. BILD:        dcb.b    40*10*15*2
  378.         dcb.b    46*2
  379. BILDscr:    dcb.b    46*10*2
  380.  
  381. ;  *******************
  382. ;  * L O A D E R ! ! *
  383. ;  *******************
  384.  
  385. OPENLIBRARY:    EQU    -408
  386. CLOSELIBRARY:    EQU    -414
  387. LOADSEG:    EQU    -150
  388. UNLOADSEG:    EQU    -156
  389.  
  390. load:    
  391.  
  392.        MOVE.L    $4.W,A6
  393.         LEA.L    DOSNAME(PC),A1
  394.         JSR    OPENLIBRARY(A6)        ; Öppna dos.library
  395.         MOVE.L    D0,DOSBASE        ; Spar dosbase
  396.         BEQ.S    EXIT
  397.  
  398.        MOVE.L    D0,A6      
  399.       JSR   CHECK_FILES 
  400.  
  401.         JSR    LOADSEG(A6)        ; Ladda objektfil
  402.         MOVE.L    D0,SAVEBPTR        ; Spar BPTR
  403.         BEQ.S    FILEERROR
  404.  
  405.         ASL.L    #2,D0
  406.         ADDQ.L    #4,D0
  407.         MOVE.L    D0,A0
  408.  
  409.         MOVEM.L    D0-D7/A0-A6,-(SP)
  410.         JSR    (A0)            ; Starta objektfilen
  411.         MOVEM.L    (SP)+,D0-D7/A0-A6
  412.  
  413.         MOVE.L    SAVEBPTR(PC),D1
  414.         JSR    UNLOADSEG(A6)        ; Deallokera filen
  415.  
  416. FILEERROR:    MOVE.L    A6,A1
  417.         MOVE.L    $4.W,A6
  418.         JSR    CLOSELIBRARY(A6)    ; Stäng dos.library
  419.  
  420. EXIT:        RTS
  421.  
  422. CHECK_FILES:
  423.         cmp.b    #0,MOUSEpos
  424.         beq.s    lo2
  425.         cmp.b    #$09,MOUSEpos
  426.         bls.s lo2
  427.       bne.s CH1
  428.       rts 
  429.  
  430. CH1:    cmp.b    #$0a,MOUSEpos
  431.         beq.s    lo3
  432.         cmp.b    #$11,MOUSEpos
  433.         bls.s lo3
  434.       bne.s CH2
  435.       rts
  436.                 
  437. CH2:    cmp.b    #$12,MOUSEpos
  438.         beq.s    lo4
  439.         cmp.b    #$1f,MOUSEpos
  440.         bls.s lo4
  441.       bne.s CH3
  442.       rts
  443.  
  444. CH3:    cmp.b    #$20,MOUSEpos
  445.         beq.s    lo5        
  446.         bhi.s lo5
  447.       rts
  448.  
  449. lo2:    MOVE.L    #FILENAME,D1
  450.       RTS
  451. lo3:    MOVE.L    #FILENAME2,D1
  452.       RTS
  453. lo4:    MOVE.L    #FILENAME3,D1
  454.       RTS
  455. lo5:    MOVE.L    #FILENAME4,D1
  456.       RTS
  457.  
  458. DOSBASE:    DC.L    0
  459. DOSNAME:    DC.B    'dos.library',0
  460. EVEN
  461. SAVEBPTR:    DC.L    0
  462.  
  463. FILENAME:    DC.B    'dh2:Test/1',0        ; Filnamn
  464. FILENAME2:    DC.B    'dh2:Test/2',0        ; Filnamn
  465. FILENAME3:    DC.B    'dh2:Test/3',0        ; Filnamn
  466. FILENAME4:    DC.B    'dh2:Test/4',0        ; Filnamn
  467.  
  468. ; Detta är texten till menyn. Den ska bestå av 13 rader som är 40 tecken breda!
  469. ; OBS! 40*13, ändra ej på det!!!!
  470. ; Använd bara STORA bokstäver, siffrorna 0-9 och tecknen ! " # $ % & ' ( ) * +
  471. ; , - . / : ; < = > ? @
  472.  
  473. MENUtext:
  474.  DC.B    "       TRACE PRESENTS : HD MENU!        " ;Varför inte skriva en
  475.  DC.B    "----------------------------------------" ;trevlig rubrik?
  476.  DC.B    "                                        "
  477.  DC.B    "    BO JACKSON'S BASEBALL / SKID ROW    " ;Skriv första demonamnet här
  478.  DC.B    "       PINBALL DREAMS / FAIRLIGHT       "
  479.  DC.B    "  FORMULA ONE GRAND PRIX / THE COMPANY  "
  480.  DC.B    "          PUSH OVER / PARADISE          "
  481.  DC.B    "                                        "
  482.  DC.B    "----------------------------------------"
  483.  DC.B    "  SORRY NO MORE GAMES AVAILABLE ON THE  " ;Är det mindre än 10 demos
  484.  DC.B    "  HD RIGHT NOW!.                        " ;kan man skriva vad som
  485.  DC.B    "                            / TRACE     " ;helst på de resterande
  486.  DC.B    "----------------------------------------" ;raderna.
  487.  
  488.