home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / asm_programming / IRISASM.ZIP / IRIS.ASM next >
Assembly Source File  |  1993-09-24  |  5KB  |  211 lines

  1.         .MODEL SMALL
  2.         .STACK 400
  3.         DOSSEG
  4.         LOCALS
  5.  
  6. PAL_DIVIDER = 2
  7.  
  8.         .DATA
  9.  
  10. CosTable LABEL BYTE
  11.         INCLUDE COSTBL.INC
  12.  
  13. ByeMsg  db 'Cool message goes here',10,13
  14.         db '$'
  15.  
  16. ;ByeMsgLng = $-ByeMsg
  17.  
  18. Palette LABEL BYTE
  19.         i = 0
  20.         REPT 128 SHR PAL_DIVIDER
  21.                 DB      63, i, 63-i
  22.                 i = i+ (1 SHL (PAL_DIVIDER-1))
  23.         ENDM
  24.         i = 0
  25.         REPT 128 SHR PAL_DIVIDER
  26.                 DB      63-i, 63, i
  27.                 i = i+ (1 SHL (PAL_DIVIDER-1))
  28.         ENDM
  29.         i = 0
  30.         REPT 128 SHR PAL_DIVIDER
  31.                 DB      0, 63-i, 63
  32.                 i = i+ (1 SHL (PAL_DIVIDER-1))
  33.         ENDM
  34.         i = 0
  35.         REPT 128 SHR PAL_DIVIDER
  36.                 DB      i, 0, 63
  37.                 i = i+ (1 SHL (PAL_DIVIDER-1))
  38.         ENDM
  39.  
  40.  
  41. VTime1  DB 2                            ; Waves' speeds.
  42. VTime2  DB 1
  43. VTime3  DB 3
  44. VTime4  DB 4
  45.  
  46.         UDATASEG
  47.  
  48. PlasmaPal DB (256 SHR (PAL_DIVIDER-1))*3 DUP (?)
  49.  
  50. Time1    DB ?                           ; Waves' positions. Random
  51. Time2    DB ?
  52. Time3    DB ?
  53. Time4    DB ?
  54.  
  55.         .CODE
  56.         .STARTUP
  57.  
  58.         CLD
  59.         MOV     AX,13h
  60.         ;mov    ax,5Fh          ;640x480 at least on diamond vesa compat card it is
  61.         INT     10h
  62.         CLI
  63.         MOV     DX,3c4h
  64.         MOV     AX,604h                  
  65.         OUT     DX,AX
  66.         MOV     AX,0F02h                ; All planes
  67.         OUT     DX,AX
  68.  
  69.         MOV     DX,3D4h
  70.         MOV     AX,14h                  ; Disable dword mode
  71.         OUT     DX,AX
  72.         MOV     AX,0E317h               ; Enable byte mode.
  73.         OUT     DX,AX
  74.         MOV     AL,9
  75.         OUT     DX,AL
  76.         INC     DX
  77.         IN      AL,DX
  78.         AND     AL,0E0h                 ; Duplicate each scan 8 times.
  79.         ADD     AL,7
  80.         OUT     DX,AL
  81.         MOV     DX,3c8h                 ; Setup palette.
  82.         MOV     AL,256-(256 SHR (PAL_DIVIDER-1))
  83.         OUT     DX,AL
  84.         INC     DX
  85.         MOV     CX,(256 SHR (PAL_DIVIDER-1))*3
  86.         MOV     SI,OFFSET Palette       ; Prestored...
  87. @@pl1:
  88.          LODSB
  89.          OUT    DX,AL
  90.          LOOP   @@pl1
  91.  
  92.         MOV     AX,0A000h
  93.         MOV     ES,AX
  94.         
  95.         MOV     SI,OFFSET CosTable
  96. MainLoop:
  97.         MOV     DX,3DAh                 ; Retrace sync.
  98. @@vs1:
  99.         IN      AL,DX
  100.         TEST    AL,8
  101.         JZ      @@vs1
  102. @@vs2:
  103.         IN      AL,DX
  104.         TEST    AL,8
  105.         JNZ     @@vs2
  106.         XOR     DI,DI
  107.  
  108.         MOV     AH,50                   ; 50 lines.
  109.         MOV     CL,Time3                ; Vertical Wave #1 position.
  110.         MOV     CH,Time4                ; Vertical Wave #2 position.
  111.    @@lv:
  112.         PUSH    AX
  113.         MOV     AH,80                    ; 80 columns. I like this mode. ;-)
  114.         MOV     DL,Time1                ; Horizontal Wave #1 position.
  115.         MOV     DH,Time2                ; Horizontal Wave #2 position.
  116.    @@lh:
  117.         MOV     BX,BP                   ; Global displacement.
  118.         MOV     AL,BL
  119. ;        ADD     AL,AH                  ; Could make for more perturbations.
  120.         XOR     BH,BH
  121.         MOV     BL,DL
  122.         ADD     AL,[SI+BX]              ; Add waves.
  123.         MOV     BL,DH
  124.         ADD     AL,[SI+BX]
  125.         MOV     BL,CL
  126.         ADD     AL,[SI+BX]
  127.         MOV     BL,CH
  128.         ADD     AL,[SI+BX]
  129.       IFDIF %PAL_DIVIDER,<1>
  130.         OR      AL, (0FFh SHL (9-PAL_DIVIDER)) AND 0FFh
  131.       ENDIF
  132.         STOSB                           ; Draw it.
  133.  
  134.         ADD     DL,1                    ; Trace the HWaves.
  135.         ADD     DH,3
  136.  
  137.         DEC     AH
  138.         JNZ     @@lh                    ; Trace the VWaves.
  139.         ADD     CL,2
  140.         ADD     CH,1
  141.         POP     AX
  142.         DEC     AH
  143.         JNZ     @@lv
  144.  
  145.  
  146.         DEC     BP                              ; Get a (reasonably) random.
  147.         MOV     BX,BP
  148.         XOR     BL,BH
  149.         XOR     BL,-1[DI]
  150.         XOR     BL,CL
  151.         XOR     BL,DL
  152.         ADD     BL,CH
  153.         ADD     BL,DH
  154.  
  155.         XOR     BH,BH                           ; Choose a speed to INC or DEC.
  156.         MOV     Di,OFFSET VTime1
  157.         TEST    BL,8
  158.         JNZ     @@dec
  159.         AND     BL,3
  160.         CMP     BYTE PTR [DI+BX],3
  161.         JG      @@sum
  162.         INC     BYTE PTR [DI+BX]
  163.         JMP     @@sum
  164.       @@dec:
  165.         AND     BL,3
  166.         CMP     BYTE PTR [DI+BX],-3
  167.         JL      @@sum
  168.         DEC     BYTE PTR [DI+BX]
  169.       @@sum:
  170.  
  171.         MOV     DL,VTime1                       ; Move waves.
  172.         MOV     DH,VTime2
  173.         MOV     CL,VTime3
  174.         MOV     CH,VTime4
  175.  
  176.         ADD     Time1,DL
  177.         SUB     Time2,DH
  178.         ADD     Time3,CL
  179.         SUB     Time4,CH
  180.  
  181.         MOV     AH,1
  182.         INT     16h
  183.         JNZ     Bye
  184.         JMP     MainLoop
  185. Bye:
  186.         XOR     AH,AH
  187.         INT     16h
  188.         MOV     AX,3
  189.         INT     10h
  190.         mov ax, @data
  191.         mov ds,ax
  192.         mov dx,offset ByeMsg
  193.         mov ah,9
  194.         int 21h
  195.         ;XOR     BH,BH
  196.         ;MOV     DX,1700h
  197.         ;MOV     AH,2
  198.         ;INT     10h
  199.  
  200.         ;MOV     AX,0B800h
  201.         ;MOV     ES,AX
  202.         ;MOV     SI,OFFSET ByeMsg
  203.         ;XOR     DI,DI
  204.         ;MOV     CX,ByeMsgLng/2
  205.         ;REP     MOVSW
  206.         MOV     AX,4C00h
  207.         INT     21h
  208.  
  209.         END
  210.  
  211.