home *** CD-ROM | disk | FTP | other *** search
/ The Amiga Demo Collection / TheAmigaDemoCollectionCDCUE.img / S / showtime05 / Bonus / BScreen.lha / Blitterscreen / startup2.i < prev   
Text File  |  1992-12-20  |  7KB  |  404 lines

  1. WaitDisk    equ    30
  2.  
  3. MAINCODE:
  4.     movem.l    d0-d7/a0-a6,-(SP)
  5.     move.l    4.w,a6
  6.     LEA    DosName(PC),A1
  7.     JSR    -$198(A6)
  8.     MOVE.L    D0,DosBase
  9.     BEQ.w    EXIT3
  10.     LEA    GfxName(PC),A1
  11.     JSR    -$198(A6)
  12.     MOVE.L    d0,GfxBase
  13.     BEQ.w    EXIT2
  14.     LEA    IntuiName(PC),A1
  15.     JSR    -$198(A6)
  16.     MOVE.L    D0,IntuiBase
  17.     BEQ.w    EXIT1
  18.     MOVE.L    d0,A0
  19.     CMP.W    #39,$14(A0)
  20.     BLT.s    VecchiaIntui
  21.     BSR.w    ResettaSpritesV39
  22. VecchiaIntui:
  23.     MOVE.L    IntuiBase(PC),A6
  24.     move.l    $3c(a6),a0
  25.     LEA    $2c(A0),A0
  26.     move.l    a0,VPfirstScreen
  27.     move.l    4(a0),a0
  28.     MOVEQ    #0,D0
  29.     MOVE.L    GfxBase(PC),A6
  30.     JSR    -$246(A6)
  31.     move.w    d0,SavedColor0
  32.     move.l    VPfirstScreen(PC),a0
  33.     LEA    colore0(PC),A1
  34.     MOVEQ    #1,D0
  35.     JSR    -$C0(A6)
  36.     MOVE.L    $22(A6),WBVIEW
  37.     SUB.L    A1,A1
  38.     JSR    -$DE(A6)
  39.     SUB.L    A1,A1
  40.     JSR    -$DE(A6)
  41.     JSR    -$10E(A6)
  42.     JSR    -$10E(A6)
  43.     JSR    -$10E(A6)
  44.     JSR    -$10E(A6)
  45.     bsr.w    InputOFF
  46.     MOVE.L    4.w,A6
  47.     SUB.L    A1,A1
  48.     JSR    -$126(A6)
  49.     MOVE.L    D0,A1
  50.     move.l    d0,ThisTask
  51.     MOVE.L    $B8(A1),pr_Win
  52.     MOVE.L    #-1,$B8(A1)
  53.     MOVEQ    #-1,D0
  54.     JSR    -$12C(A6)
  55.     LEA    $DFF006,A5
  56.     lea    $bfe001,a4
  57.     moveq    #6,d2
  58.     MOVE.w    #$dd,D0
  59.     MOVE.w    #WaitDisk,D1
  60. WaitaLoop:
  61.     btst.b    d2,(a4)
  62.     beq.s    SkippaWait
  63.     CMP.B    (A5),D0
  64.     BNE.S    WaitaLoop
  65. Wait2:    CMP.B    (A5),D0
  66.     Beq.s    Wait2
  67.     dbra    D1,WaitaLoop
  68. SkippaWait:
  69.     btst.b    d2,(a4)
  70.     beq.s    SkippaWait
  71.     MOVE.L    4.w,A6
  72.     move.l    ThisTask(PC),a1
  73.     MOVEQ    #127,D0
  74.     JSR    -$12C(A6)
  75.     MOVE.L    GfxBase(PC),A6
  76.     jsr    -$1c8(a6)
  77.     jsr    -$E4(A6)
  78.     JSR    -$E4(A6)
  79.     move.l    4.w,a6
  80.     JSR    -$84(a6)
  81.     JSR    -$78(A6)
  82.     bsr.w    HEAVYINIT
  83.     move.l    4.w,a6
  84.     JSR    -$7E(A6)
  85.     JSR    -$8A(A6)
  86.     move.l    ThisTask(PC),a1
  87.     MOVE.L    pr_Win(PC),$B8(A1)
  88.     MOVEQ    #0,D0
  89.     JSR    -$12C(A6)
  90.     MOVE.L    GfxBase(PC),A6
  91.     jsr    -$E4(A6)
  92.     JSR    -$E4(A6)
  93.     jsr    -$1ce(a6)
  94.     MOVE.L    IntuiBase(PC),A0
  95.     CMP.W    #39,$14(A0)
  96.     BLT.s    Vecchissima
  97.     BSR.w    RimettiSprites
  98. Vecchissima:
  99.     MOVE.L    GfxBase(PC),A6
  100.     move.l    VPfirstScreen(PC),a0
  101.     LEA    SavedColor0(PC),A1
  102.     MOVEQ    #1,D0
  103.     MOVE.L    GfxBase(PC),A6
  104.     JSR    -$C0(a6)
  105.     MOVE.L    WBVIEW(PC),A1
  106.     JSR    -$DE(A6)
  107.     JSR    -$10E(A6)
  108.     JSR    -$10E(A6)
  109.     MOVE.W    #$11,$DFF10C
  110.     MOVE.L    $26(a6),$dff080
  111.     MOVE.L    $32(a6),$dff084
  112.     bsr.w    InputON
  113.     MOVE.L    IntuiBase(PC),A6
  114.     JSR    -$186(A6)
  115.     MOVE.L    A6,A1
  116.     move.l    4.w,a6
  117.     jsr    -$19E(a6)
  118. EXIT1:    MOVE.L    GfxBase(PC),A1
  119.     jsr    -$19E(a6)
  120. EXIT2:    MOVE.L    DosBase(PC),A1
  121.     jsr    -$19E(a6)
  122. EXIT3:    movem.l    (SP)+,d0-d7/a0-a6
  123.     RTS
  124.  
  125. pr_Win:    dc.l    0
  126. colore0:
  127.     dc.w    $012
  128. SavedColor0:
  129.     dc.w    0
  130. VPfirstScreen:
  131.     dc.l    0
  132. ThisTask:
  133.     dc.l    0
  134.  
  135. ResettaSpritesV39:
  136.     MOVE.L    IntuiBase(PC),A6
  137.     LEA    Workbench(PC),A0
  138.     JSR    -$1FE(A6)
  139.     MOVE.L    D0,SchermoWBLocckato
  140.     BEQ.s    ErroreSchermo
  141.     MOVE.L    D0,A0
  142.     MOVE.L    $30(A0),A0
  143.     LEA    GETVidCtrlTags(PC),A1
  144.     MOVE.L    GfxBase(PC),A6
  145.     JSR    -$2C4(A6)
  146.     MOVE.L    IntuiBase(PC),A6
  147.     move.l    $3c(a6),a0
  148.     MOVE.L    $30(A0),A0
  149.     LEA    GETVidCtrlTags2(PC),A1
  150.     MOVE.L    GfxBase(PC),A6
  151.     JSR    -$2C4(A6)
  152.     MOVE.L    SchermoWBLocckato(PC),A0
  153.     MOVE.L    $30(A0),A0
  154.     LEA    SETVidCtrlTags(PC),A1
  155.     MOVE.L    GfxBase(PC),A6
  156.     JSR    -$2C4(A6)
  157.     move.L    IntuiBase(PC),A6
  158.     move.l    $3c(a6),a0
  159.     move.L    $30(A0),A0
  160.     LEA    SETVidCtrlTags(PC),A1
  161.     move.L    GfxBase(PC),A6
  162.     JSR    -$2C4(A6)
  163.     move.L    SchermoWBLocckato(PC),A0
  164.     move.L    IntuiBase(PC),A6
  165.     JSR    -$17A(A6)
  166.     move.l    $3c(a6),a0
  167.     JSR    -$17A(A6)
  168.     JSR    -$186(A6)
  169. ErroreSchermo:
  170.     RTS
  171.  
  172. RimettiSprites:
  173.     MOVE.L    SchermoWBLocckato(PC),D0
  174.     BEQ.S    NonAvevaFunzionato
  175.     MOVE.L    D0,A0
  176.     MOVE.L    OldRisoluzione(PC),OldRisoluzione2 
  177.     LEA    SETOldVidCtrlTags(PC),A1
  178.     MOVE.L    $30(A0),A0
  179.     MOVE.L    GfxBase(PC),A6
  180.     JSR    -$2C4(A6)
  181.     MOVE.L    IntuiBase(PC),A6
  182.     move.l    $3c(a6),a0
  183.     MOVE.L    OldRisoluzioneP(PC),OldRisoluzione2
  184.     LEA    SETOldVidCtrlTags(PC),A1
  185.     MOVE.L    $30(A0),A0
  186.     MOVE.L    GfxBase(PC),A6
  187.     JSR    -$2C4(A6)
  188.     move.L    IntuiBase(PC),A6
  189.     move.L    SchermoWBLocckato(PC),A0
  190.     JSR    -$17A(A6)
  191.     move.l    $3c(a6),a0
  192.     JSR    -$17A(A6)
  193.     MOVE.L    SchermoWBLocckato(PC),A1
  194.     SUB.L    A0,A0
  195.     move.L    IntuiBase(PC),A6
  196.     JSR    -$204(A6)
  197. NonAvevaFunzionato:
  198.     RTS
  199. SchermoWBLocckato:
  200.     dc.l    0
  201.  
  202. GETVidCtrlTags:
  203.     dc.l    $80000032
  204. OldRisoluzione:
  205.     dc.l    0
  206.     dc.l    0,0,0
  207.  
  208. GETVidCtrlTags2:
  209.     dc.l    $80000032
  210. OldRisoluzioneP:
  211.     dc.l    0
  212.     dc.l    0,0,0
  213. SETVidCtrlTags:
  214.     dc.l    $80000031
  215.     dc.l    1
  216.     dc.l    0,0,0
  217. SETOldVidCtrlTags:
  218.     dc.l    $80000031
  219. OldRisoluzione2:
  220.     dc.l    0
  221.     dc.l    0,0,0
  222. Workbench:
  223.     dc.b    'Workbench',0
  224.  
  225. InputOFF:
  226.     LEA    INPUTMPORT(PC),A1
  227.     BSR.w    CREATEPORT
  228.     CMP.L    #-1,D0
  229.     BEQ.w    INTUIERROR
  230.     MOVE.L    #INPUTMPORT,inputioST
  231.     LEA    INPUTDEVICE(PC),A0
  232.     MOVEQ    #0,D0
  233.     LEA    INPUTIO(PC),A1
  234.     MOVEQ    #0,D1
  235.     MOVE.L    4.w,A6
  236.     JSR    -$1BC(A6)
  237.     TST.L    D0
  238.     BNE.S    INTUITIONON1
  239.     MOVE.B    #51,LN_PRI
  240.     CLR.L    IS_DATA
  241.     MOVE.L    #READINPUT,IS_CODE
  242.     MOVE.W    #9,IO_COMMAND
  243.     MOVE.L    #INPUTHANDLER,IO_DATA
  244.     LEA    INPUTIO(PC),A1
  245.     MOVE.L    4.w,A6
  246.     JSR    -$1C8(A6)
  247.     RTS
  248. READINPUT:
  249.     MOVEQ    #0,D0
  250.     RTS
  251.  
  252. InputON:
  253.     TST.B    InputErrFlag
  254.     BNE.S    EsciInputON
  255.     MOVE.W    #10,IO_COMMAND
  256.     MOVE.L    #INPUTHANDLER,IO_DATA
  257.     LEA    INPUTIO(PC),A1
  258.     MOVE.L    4.w,A6
  259.     JSR    -$1C8(A6)
  260.     LEA    INPUTIO(PC),A1
  261.     MOVE.L    4.w,A6
  262.     JSR    -$1C2(A6)
  263. INTUITIONON1:
  264.     LEA    INPUTMPORT(PC),A1
  265.     BSR.s    FREEUPPORT
  266. INTUIERROR:
  267.     MOVE.B    #$FF,InputErrFlag
  268. EsciInputON:
  269.     RTS
  270. InputErrFlag:
  271.     dc.w    0
  272. CREATEPORT:
  273.     MOVE.L    A1,-(SP)
  274.     MOVEQ    #-1,D0
  275.     MOVE.L    4.w,A6
  276.     JSR    -$14A(A6)
  277.     MOVEQ    #-1,D1
  278.     CMP.L    D1,D0
  279.     BEQ.S    FREEUPPORT1
  280.     MOVE.L    (SP),A0
  281.     MOVE.B    #0,9(A0)
  282.     MOVE.B    #4,8(A0)
  283.     MOVE.B    #0,14(A0)
  284.     MOVE.B    D0,15(A0)
  285.     SUBA.L    A1,A1
  286.     MOVE.L    4.w,A6
  287.     JSR    -$126(A6)
  288.     MOVE.L    (SP),A1
  289.     MOVE.L    D0,$10(A1)
  290.     LEA    $14(A1),A0
  291.     MOVE.L    A0,(A0)
  292.     ADDQ.L    #4,(A0)
  293.     CLR.L    4(A0)
  294.     MOVE.L    A0,8(A0)
  295. CREATEPORTEXIT:
  296.     MOVE.L    (SP)+,D0
  297.     RTS
  298. FREEUPPORT:
  299.     MOVE.L    A1,-(SP)
  300.     MOVE.B    15(A1),D0
  301.     MOVE.L    4.w,A6
  302.     JSR    -$150(A6)
  303. FREEUPPORT1:
  304.     MOVE.L    (SP)+,A1
  305.     RTS
  306.  
  307. INPUTMPORT:    ds.b    34
  308. INPUTIO:    ds.b    14
  309. inputioST:    ds.b    14
  310. IO_COMMAND:    ds.b    12
  311. IO_DATA:    ds.b    8
  312. INPUTHANDLER:    ds.b    9
  313. LN_PRI:        ds.b    5
  314. IS_DATA:    dc.l    0
  315. IS_CODE:    dc.l    0
  316. INPUTDEVICE:    dc.b    'input.device',0,0
  317.  
  318. HEAVYINIT:
  319.     LEA    $DFF000,A5
  320.     MOVE.W    $2(A5),OLDDMA
  321.     MOVE.W    $1C(A5),OLDINTENA
  322.     MOVE.W    $10(A5),OLDADKCON
  323.     MOVE.W    $1E(A5),OLDINTREQ
  324.     MOVE.L    #$80008000,d0
  325.     OR.L    d0,OLDDMA
  326.     OR.L    d0,OLDADKCON
  327.     MOVE.L    #$7FFF7FFF,$9A(a5)
  328.     MOVE.L    #0,$144(A5)
  329.     MOVE.W    #$7FFF,$96(a5)
  330.     MOVE.L    #0,$144(A5)
  331.     move.l    4.w,a6
  332.     btst.b    #0,$129(a6)
  333.     beq.s    IntOK
  334.     lea    SuperCode(PC),a5
  335.     jsr    -$1e(a6)
  336.     bra.s    IntOK
  337. SuperCode:
  338.     dc.l      $4e7a9801
  339.     move.l    a1,BaseVBR
  340.     RTE
  341. BaseVBR:    dc.l    0
  342.  
  343. IntOK:    move.l    BaseVBR(PC),a0
  344.     move.l    $64(a0),OldInt64
  345.     move.l    $68(a0),OldInt68
  346.     move.l    $6c(a0),OldInt6c
  347.     move.l    $70(a0),OldInt70
  348.     move.l    $74(a0),OldInt74
  349.     move.l    $78(a0),OldInt78
  350.     bsr.w    ClearMyCache
  351.     lea    $dff000,a5
  352.  
  353.     bsr.w    START        ;<--- Qui salta al programma vero e proprio
  354.  
  355.     bsr.w    ClearMyCache
  356.     LEA    $dff000,a5
  357.     MOVE.W    #$8240,$96(a5)
  358.     BTST.b    #6,2(a5)
  359. Wblittez:
  360.     BTST.b    #6,2(a5)
  361.     BNE.S    Wblittez
  362.     MOVE.W    #$7FFF,$96(A5)
  363.     MOVE.L    #$7FFF7FFF,$9A(A5)
  364.     MOVE.W    #$7fff,$9E(a5)
  365.     move.l    BaseVBR(PC),a0
  366.     move.l    OldInt64(PC),$64(a0)
  367.     move.l    OldInt68(PC),$68(a0)
  368.     move.l    OldInt6c(PC),$6c(a0)
  369.     move.l    OldInt70(PC),$70(a0)
  370.     move.l    OldInt74(PC),$74(a0)
  371.     move.l    OldInt78(PC),$78(a0)
  372.     MOVE.W    OLDADKCON(PC),$9E(A5)
  373.     MOVE.W    OLDDMA(PC),$96(A5)
  374.     MOVE.W    OLDINTENA(PC),$9A(A5)
  375.     MOVE.W    OLDINTREQ(PC),$9C(A5)
  376.     RTS
  377. WBVIEW:    DC.L    0
  378. GfxName:    dc.b    'graphics.library',0,0
  379. IntuiName:    dc.b    'intuition.library',0
  380. DosName:    dc.b    "dos.library",0
  381. GfxBase:    dc.l    0
  382. IntuiBase:    dc.l    0
  383. DosBase:    dc.l    0
  384. OLDDMA:    dc.w    0
  385. OLDINTENA:    dc.w    0
  386. OLDADKCON:    DC.W    0
  387. OLDINTREQ:    DC.W    0
  388. OldInt64:    dc.l    0
  389. OldInt68:    dc.l    0
  390. OldInt6c:    dc.l    0
  391. OldInt70:    dc.l    0
  392. OldInt74:    dc.l    0
  393. OldInt78:    dc.l    0
  394. ClearMyCache:
  395.     movem.l    d0-d7/a0-a6,-(SP)
  396.     move.l    4.w,a6
  397.     MOVE.W    $14(A6),D0
  398.     CMP.W    #37,D0
  399.     blo.s    nocaches
  400.     jsr    -$27c(a6)
  401. nocaches:
  402.     movem.l    (sp)+,d0-d7/a0-a6
  403.     rts
  404.