home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / DEMOSCENE-STUFF / INTRO5.ZIP / INTRO5.ASM < prev    next >
Assembly Source File  |  1992-08-05  |  13KB  |  754 lines

  1.  
  2.  
  3. ;*************************
  4. pile   segment  para stack 'pile'
  5.        dw 256 dup(0)
  6. pile   ends
  7. ;*************************
  8.  
  9. ;*************************
  10. donnees segment word public 'donnees'
  11.  
  12. ;---------------------------
  13. palette:
  14.  db 0,0,0,8,8,8,16,16,16,24,24,24
  15.  db 32,32,32,40,40,40,48,48,48,56,56,56
  16.  
  17.  db 0,0,0,0,0,0,0,0,0,0,0,0
  18.  db 0,0,0,0,0,0,0,0,0,0,0,0
  19.  
  20.  
  21. ;----------------------------------------------
  22. ; Données Rouleaux à Mixer
  23.  
  24. rasta0:
  25. rasta1:
  26.  db 128,127,106,128,25,7
  27. rasta2:
  28.  db 192,63,53,192,12,3
  29. rasta3:
  30.  db 224,31,26,96,6,128,1
  31. rasta4:
  32.  db 240,15,13,176,3,192
  33. rasta5:
  34.  db 248,7,6,88,1,96,128
  35. rasta6:
  36.  db 252,3,3,172,48,192
  37. rasta7:
  38.  db 254,1,1,86,152,224
  39.  
  40. ; Données Rouleaux-Bloc à Charger ds les Latches
  41.  
  42. rastl0:
  43.  db 213,51,15,171,204,240
  44. rastl1:
  45.  db 213,230,248
  46. rastl2:
  47.  db 106,243,252
  48. rastl3:
  49.  db 181,121,254
  50. rastl4:
  51.  db 90,60,255
  52. rastl5:
  53.  db 173,158,127
  54. rastl6:
  55.  db 86,207,63
  56. rastl7:
  57.  db 171,103,31
  58. f_rastl:
  59.  
  60. ;------------------------------------------------
  61.  
  62. sinus:
  63.  include c:\masm\data\rolosin.dat
  64.  
  65. sin_point dw 0
  66. ;------------------------------------------------
  67.  
  68. screen dw 0a000h,0a800h
  69. vpage  dw 12,12+32*4*256
  70.  
  71. ;*************************
  72.  
  73. donnees ends
  74.  
  75. ;*************************
  76. .286
  77. code   segment word public 'code'
  78.        assume  cs:code,ds:donnees,ss:pile
  79.  
  80. codeur      proc far
  81.  
  82.             cli                     ; Int Off
  83.  
  84. ;---------  Programme Principal  ---------
  85.  
  86.             mov    ax,000dh         ; 320x200 16 Couleurs
  87.             int    10h
  88.  
  89.             mov    ax,seg donnees
  90.             mov    ds,ax
  91.  
  92.             lea    si,palette
  93.             call   newpal           ; nouvelle palette
  94.  
  95. ;---------  Copier les motifs dans la Video Ram ---------
  96.  
  97.             mov    ax,0a000h
  98.             mov    es,ax
  99.             mov    dx,3c4h
  100.  
  101.             lea    si,rastl0
  102.             mov    di,8000
  103.             mov    ax,0102h
  104.             out    dx,ax            ; Plan 1
  105.  
  106.             mov    cx,(offset f_rastl - offset rastl0)/3
  107. to_latch1:  lodsb
  108.             mov    es:[di+8000h],al ; Page 2
  109.             stosb                   ; Page 1
  110.             add    si,2
  111.             loop   to_latch1
  112.  
  113.             mov    si,(offset rastl0)+1
  114.             mov    di,8000
  115.             mov    ax,0202h
  116.             out    dx,ax            ; Plan 2
  117.  
  118.             mov    cx,(offset f_rastl - offset rastl0)/3
  119. to_latch2:  lodsb
  120.             mov    es:[di+8000h],al ; Page 2
  121.             stosb                   ; Page 1
  122.             add    si,2
  123.             loop   to_latch2
  124.  
  125.             mov    si,(offset rastl0)+2
  126.             mov    di,8000
  127.             mov    ax,0402h
  128.             out    dx,ax            ; Plan 3
  129.  
  130.             mov    cx,(offset f_rastl - offset rastl0)/3
  131. to_latch3:  lodsb
  132.             mov    es:[di+8000h],al ; Page 2
  133.             stosb                   ; Page 1
  134.             add    si,2
  135.             loop   to_latch3
  136.  
  137. ;----------------------------------------------------------
  138.  
  139.             mov    ax,seg donnees
  140.             mov    ds,ax
  141. demo:
  142.  
  143.             call   wait_vbl         ; VSYNC
  144.  
  145. ;        -- Swap   Screens --
  146.  
  147.             mov    ax,screen
  148.             mov    bx,screen+2
  149.             mov    screen+2,ax
  150.             mov    screen,bx
  151.  
  152.             mov    dx,3d4h
  153.             mov    ax,vpage+2
  154.             out    dx,ax
  155.             mov    bx,vpage
  156.             mov    vpage+2,bx
  157.             mov    vpage,ax
  158.  
  159.             mov    ax,1000h
  160.             call   color
  161.  
  162. ;         ----- Affichage des Rasters -----
  163.  
  164.             mov    ax,screen        ; écran logique
  165.             mov    es,ax
  166.  
  167.             mov    dx,3c4h          ; Clear 1ère ligne
  168.             mov    ax,0f02h
  169.             out    dx,ax
  170.             xor    di,di
  171.             xor    ax,ax
  172.             mov    cx,20
  173.             rep    stosw
  174.  
  175.             lea    bp,sinus         ; pointe sur la table
  176.             add    bp,sin_point     ; + offset
  177.  
  178.             xor    di,di            ; di=0
  179.  
  180.  
  181. ;       ---    Barres+Copies  ---
  182.  
  183.            rept   17
  184.  
  185.             push   ds               ; sauve segment données
  186.             push   di               ; sauve offset
  187.  
  188.             add    di,ds:[bp]       ; + offset sinus
  189.             mov    bx,ds:2[bp]      ; BX = Décalage sinus
  190.             add    bp,4*4           ; prépare sinus suivant
  191.  
  192.             call   rouleaux         ; afficher bout de rouleau
  193.             pop    di               ; récupère offset
  194.  
  195.             mov    cx,40*4
  196.             mov    si,di
  197.             add    di,40
  198.             rep    movsb            ; copie 4 lignes de Rasters
  199.  
  200.             pop    ds               ; récupère segment données
  201.             mov    ax,0005h         ; Mode Read 0/Write 0
  202.             out    dx,ax            ; (DX=3CEh)
  203.  
  204.             mov    di,si            ; se repositionne au début de la ligne
  205.  
  206.            endm
  207.  
  208. ;      --   Dernière Ligne  --
  209.  
  210.             push   ds               ; sauve segment données
  211.             push   di               ; sauve offset
  212.  
  213.             add    di,ds:[bp]       ; + offset sinus
  214.             mov    bx,ds:2[bp]      ; BX = Décalage sinus
  215.             add    bp,4*4           ; prépare sinus suivant
  216.  
  217.             call   rouleaux         ; afficher bout de rouleau
  218.             pop    di               ; récupère offset
  219.  
  220.             mov    cx,40*7
  221.             mov    si,di
  222.             add    di,40
  223.             rep    movsb            ; copie 7 lignes de Rasters
  224.  
  225. ;         ---- Symétrie ----
  226.  
  227.             mov    di,si            ; se repositionne au début de la ligne
  228.  
  229.             sub    si,40*11
  230.             mov    cx,40*4          ; 1
  231.             rep    movsb
  232.  
  233.            rept   16
  234.             sub    si,40*8          ; ...
  235.             mov    cx,40*4
  236.             rep    movsb
  237.            endm
  238.  
  239. ;         ------------------
  240.  
  241.             pop    ds               ; récupère segment données
  242.             mov    ax,0005h         ; Mode Read 0/Write 0
  243.             out    dx,ax            ; (DX=3CEh)
  244.  
  245. ;         -------------------
  246.  
  247.             xor    ax,ax
  248.             call   color
  249.  
  250.             add    sin_point,4*3    ; Incrémenter Sinus
  251.             and    sin_point,2047
  252.  
  253. ;         -------------------
  254.  
  255.  
  256.             in     al,60h           ; test if space bar
  257.             cmp    al,39h
  258.             jne    demo
  259.  
  260. ;         -------------------
  261.  
  262.             sti                     ; Int On
  263.  
  264.             mov    ax,0003h         ; Mode Text
  265.             int    10h
  266.  
  267.             mov    ax,4c00h         ; Exit
  268.             int    21h
  269.  
  270. codeur      endp
  271.  
  272. ;---------  Procédures  ----------
  273.  
  274. newpal     proc   near
  275.  
  276.             mov    dx,3c8h          ; DAC Port
  277.             xor    cl,cl
  278.  
  279.            rept   16
  280.  
  281.             mov    al,cl
  282.             out    dx,al            ; N° Couleur
  283.             inc    dl
  284.  
  285.             outsb                   ; Poker RGB Values
  286.             outsb
  287.             outsb
  288.  
  289.             dec    dl
  290.             inc    cl               ; N°=N°+1
  291.  
  292.            endm
  293.  
  294.             ret
  295.  
  296. newpal     endp
  297.  
  298. wait_vbl   proc   near              ; pour attendre la VBL
  299.             mov    dx,03dah
  300.             in     al,dx
  301.             jmp    $+2
  302.             test   al,08h
  303.             jz     V_Ready
  304. V_Not_Ready:        
  305.             in     al,dx
  306.             jmp    $+2
  307.             test   al,08h
  308.             jz     V_Not_Ready
  309. V_Ready:
  310.             in     al,dx
  311.             jmp    $+2
  312.             test   al,08h
  313.             jz     V_Ready
  314.             ret
  315.  
  316. wait_vbl   endp
  317.  
  318.  
  319. ; -------- Code Généré ---------
  320.  
  321. rouleaux   proc   near
  322.  
  323. ; ES:DI    = Destination
  324. ; BX       = Décalage*8
  325.  
  326.            add    bx,offset rolo_table
  327.  
  328.            mov    si,cs:2[bx]       ; Datas AND/OR
  329.            mov    cx,cs:4[bx]       ; Datas Blok
  330.  
  331.            jmp    word ptr cs:[bx]  ; Jump to Adr Routine
  332.  
  333. rolo_table:
  334.  dw offset rolo0,offset rasta0,8000+(offset rastl0-offset rastl0)/3,0
  335.  dw offset rolo1,offset rasta1,8000+(offset rastl1-offset rastl0)/3,0
  336.  dw offset rolo2,offset rasta2,8000+(offset rastl2-offset rastl0)/3,0
  337.  dw offset rolo3,offset rasta3,8000+(offset rastl3-offset rastl0)/3,0
  338.  dw offset rolo4,offset rasta4,8000+(offset rastl4-offset rastl0)/3,0
  339.  dw offset rolo5,offset rasta5,8000+(offset rastl5-offset rastl0)/3,0
  340.  dw offset rolo6,offset rasta6,8000+(offset rastl6-offset rastl0)/3,0
  341.  dw offset rolo7,offset rasta7,8000+(offset rastl7-offset rastl0)/3,0
  342.  
  343. rolo0:
  344.  mov dx,3c4h
  345.  mov ax,0f02h
  346.  out dx,ax
  347.  mov si,cx
  348.  mov ax,es
  349.  mov ds,ax
  350.  mov dl,0ceh
  351.  mov ax,0105h
  352.  out dx,ax
  353.  movsb
  354.  movsb
  355.  ret
  356.  
  357. rolo1:
  358.  mov bx,di
  359.  mov dx,3c4h
  360.  mov ax,0f02h
  361.  out dx,ax
  362.  mov dl,0ceh
  363.  mov ax,0803h
  364.  out dx,ax
  365.  mov al,es:[di]
  366.  movsb
  367.  inc di
  368.  mov al,es:[di]
  369.  movsb
  370.  mov di,bx
  371.  mov ax,1003h
  372.  out dx,ax
  373.  mov dl,0c4h
  374.  mov ax,0102h
  375.  out dx,ax
  376.  mov al,es:[di]
  377.  movsb
  378.  inc di
  379.  mov al,es:[di]
  380.  movsb
  381.  mov di,bx
  382.  inc dl
  383.  mov al,02h
  384.  out dx,al
  385.  mov al,es:[di]
  386.  movsb
  387.  mov di,bx
  388.  mov al,04h
  389.  out dx,al
  390.  mov al,es:[di]
  391.  movsb
  392.  mov di,bx
  393.  mov si,cx
  394.  mov ax,es
  395.  mov ds,ax
  396.  mov al,0fh
  397.  out dx,al
  398.  mov dl,0ceh
  399.  mov ax,0003h
  400.  out dx,ax
  401.  mov ax,0105h
  402.  out dx,ax
  403.  inc di
  404.  movsb
  405.  ret
  406.  
  407. rolo2:
  408.  mov bx,di
  409.  mov dx,3c4h
  410.  mov ax,0f02h
  411.  out dx,ax
  412.  mov dl,0ceh
  413.  mov ax,0803h
  414.  out dx,ax
  415.  mov al,es:[di]
  416.  movsb
  417.  inc di
  418.  mov al,es:[di]
  419.  movsb
  420.  mov di,bx
  421.  mov ax,1003h
  422.  out dx,ax
  423.  mov dl,0c4h
  424.  mov ax,0102h
  425.  out dx,ax
  426.  mov al,es:[di]
  427.  movsb
  428.  inc di
  429.  mov al,es:[di]
  430.  movsb
  431.  mov di,bx
  432.  inc dl
  433.  mov al,02h
  434.  out dx,al
  435.  mov al,es:[di]
  436.  movsb
  437.  mov di,bx
  438.  mov al,04h
  439.  out dx,al
  440.  mov al,es:[di]
  441.  movsb
  442.  mov di,bx
  443.  mov si,cx
  444.  mov ax,es
  445.  mov ds,ax
  446.  mov al,0fh
  447.  out dx,al
  448.  mov dl,0ceh
  449.  mov ax,0003h
  450.  out dx,ax
  451.  mov ax,0105h
  452.  out dx,ax
  453.  inc di
  454.  movsb
  455.  ret
  456.  
  457. rolo3:
  458.  mov bx,di
  459.  mov dx,3c4h
  460.  mov ax,0f02h
  461.  out dx,ax
  462.  mov dl,0ceh
  463.  mov ax,0803h
  464.  out dx,ax
  465.  mov al,es:[di]
  466.  movsb
  467.  inc di
  468.  mov al,es:[di]
  469.  movsb
  470.  mov di,bx
  471.  mov ax,1003h
  472.  out dx,ax
  473.  mov dl,0c4h
  474.  mov ax,0102h
  475.  out dx,ax
  476.  mov al,es:[di]
  477.  movsb
  478.  inc di
  479.  mov al,es:[di]
  480.  movsb
  481.  mov di,bx
  482.  inc dl
  483.  mov al,02h
  484.  out dx,al
  485.  mov al,es:[di]
  486.  movsb
  487.  inc di
  488.  mov al,es:[di]
  489.  movsb
  490.  mov di,bx
  491.  mov al,04h
  492.  out dx,al
  493.  mov al,es:[di]
  494.  movsb
  495.  mov di,bx
  496.  mov si,cx
  497.  mov ax,es
  498.  mov ds,ax
  499.  mov al,0fh
  500.  out dx,al
  501.  mov dl,0ceh
  502.  mov ax,0003h
  503.  out dx,ax
  504.  mov ax,0105h
  505.  out dx,ax
  506.  inc di
  507.  movsb
  508.  ret
  509.  
  510. rolo4:
  511.  mov bx,di
  512.  mov dx,3c4h
  513.  mov ax,0f02h
  514.  out dx,ax
  515.  mov dl,0ceh
  516.  mov ax,0803h
  517.  out dx,ax
  518.  mov al,es:[di]
  519.  movsb
  520.  inc di
  521.  mov al,es:[di]
  522.  movsb
  523.  mov di,bx
  524.  mov ax,1003h
  525.  out dx,ax
  526.  mov dl,0c4h
  527.  mov ax,0102h
  528.  out dx,ax
  529.  mov al,es:[di]
  530.  movsb
  531.  inc di
  532.  mov al,es:[di]
  533.  movsb
  534.  mov di,bx
  535.  inc dl
  536.  mov al,02h
  537.  out dx,al
  538.  mov al,es:[di]
  539.  movsb
  540.  inc di
  541.  mov al,es:[di]
  542.  movsb
  543.  mov di,bx
  544.  mov al,04h
  545.  out dx,al
  546.  mov di,bx
  547.  mov si,cx
  548.  mov ax,es
  549.  mov ds,ax
  550.  mov al,0fh
  551.  out dx,al
  552.  mov dl,0ceh
  553.  mov ax,0003h
  554.  out dx,ax
  555.  mov ax,0105h
  556.  out dx,ax
  557.  inc di
  558.  movsb
  559.  ret
  560.  
  561. rolo5:
  562.  mov bx,di
  563.  mov dx,3c4h
  564.  mov ax,0f02h
  565.  out dx,ax
  566.  mov dl,0ceh
  567.  mov ax,0803h
  568.  out dx,ax
  569.  mov al,es:[di]
  570.  movsb
  571.  inc di
  572.  mov al,es:[di]
  573.  movsb
  574.  mov di,bx
  575.  mov ax,1003h
  576.  out dx,ax
  577.  mov dl,0c4h
  578.  mov ax,0102h
  579.  out dx,ax
  580.  mov al,es:[di]
  581.  movsb
  582.  inc di
  583.  mov al,es:[di]
  584.  movsb
  585.  mov di,bx
  586.  inc dl
  587.  mov al,02h
  588.  out dx,al
  589.  mov al,es:[di]
  590.  movsb
  591.  inc di
  592.  mov al,es:[di]
  593.  movsb
  594.  mov di,bx
  595.  mov al,04h
  596.  out dx,al
  597.  add di,2
  598.  mov al,es:[di]
  599.  movsb
  600.  mov di,bx
  601.  mov si,cx
  602.  mov ax,es
  603.  mov ds,ax
  604.  mov al,0fh
  605.  out dx,al
  606.  mov dl,0ceh
  607.  mov ax,0003h
  608.  out dx,ax
  609.  mov ax,0105h
  610.  out dx,ax
  611.  inc di
  612.  movsb
  613.  ret
  614.  
  615. rolo6:
  616.  mov bx,di
  617.  mov dx,3c4h
  618.  mov ax,0f02h
  619.  out dx,ax
  620.  mov dl,0ceh
  621.  mov ax,0803h
  622.  out dx,ax
  623.  mov al,es:[di]
  624.  movsb
  625.  inc di
  626.  mov al,es:[di]
  627.  movsb
  628.  mov di,bx
  629.  mov ax,1003h
  630.  out dx,ax
  631.  mov dl,0c4h
  632.  mov ax,0102h
  633.  out dx,ax
  634.  mov al,es:[di]
  635.  movsb
  636.  inc di
  637.  mov al,es:[di]
  638.  movsb
  639.  mov di,bx
  640.  inc dl
  641.  mov al,02h
  642.  out dx,al
  643.  add di,2
  644.  mov al,es:[di]
  645.  movsb
  646.  mov di,bx
  647.  mov al,04h
  648.  out dx,al
  649.  add di,2
  650.  mov al,es:[di]
  651.  movsb
  652.  mov di,bx
  653.  mov si,cx
  654.  mov ax,es
  655.  mov ds,ax
  656.  mov al,0fh
  657.  out dx,al
  658.  mov dl,0ceh
  659.  mov ax,0003h
  660.  out dx,ax
  661.  mov ax,0105h
  662.  out dx,ax
  663.  inc di
  664.  movsb
  665.  ret
  666.  
  667. rolo7:
  668.  mov bx,di
  669.  mov dx,3c4h
  670.  mov ax,0f02h
  671.  out dx,ax
  672.  mov dl,0ceh
  673.  mov ax,0803h
  674.  out dx,ax
  675.  mov al,es:[di]
  676.  movsb
  677.  inc di
  678.  mov al,es:[di]
  679.  movsb
  680.  mov di,bx
  681.  mov ax,1003h
  682.  out dx,ax
  683.  mov dl,0c4h
  684.  mov ax,0102h
  685.  out dx,ax
  686.  mov al,es:[di]
  687.  movsb
  688.  inc di
  689.  mov al,es:[di]
  690.  movsb
  691.  mov di,bx
  692.  inc dl
  693.  mov al,02h
  694.  out dx,al
  695.  add di,2
  696.  mov al,es:[di]
  697.  movsb
  698.  mov di,bx
  699.  mov al,04h
  700.  out dx,al
  701.  add di,2
  702.  mov al,es:[di]
  703.  movsb
  704.  mov di,bx
  705.  mov si,cx
  706.  mov ax,es
  707.  mov ds,ax
  708.  mov al,0fh
  709.  out dx,al
  710.  mov dl,0ceh
  711.  mov ax,0003h
  712.  out dx,ax
  713.  mov ax,0105h
  714.  out dx,ax
  715.  inc di
  716.  movsb
  717.  ret
  718.  
  719.  
  720.  
  721. rouleaux   endp
  722.  
  723. ; ------------------------------
  724.  
  725. color     proc near
  726.  
  727. ; AX
  728.           mov  dx,3c8h
  729.           out  dx,ax
  730.           inc  dl
  731.           mov  al,ah
  732.           out  dx,al
  733.           out  dx,al
  734.           ret
  735.  
  736. color     endp
  737.  
  738.  
  739. code       ends
  740.            end   codeur
  741.  ;************************
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.