home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / basq / source / forgat / forgat.asm < prev    next >
Encoding:
Assembly Source File  |  1993-08-13  |  4.6 KB  |  187 lines

  1. INCLUDE        D:\POWERU\PWRFUNC.INC
  2. INCLUDELIB    D:\POWERU\PWRFUNC.LIB
  3.  
  4.         PALETTE        EQU     64
  5.         EXTERNDATA    EQU    PALETTE+4
  6.  
  7. DOSSEG
  8. .386
  9. .MODEL USE16 SMALL
  10. .STACK
  11. .DATA
  12.         LINELENGTH              DW      320
  13.     EYEDISTANCE2        DW    256
  14.     ORIGO_X2        DW    159
  15.     ORIGO_Y2        DW    99
  16.     ORIGO_Z2        DW    0
  17.  
  18.         INCLUDE BENOBJ01.DAT
  19.  
  20. .CODE
  21. STARTUP:        MOV     AX,DGROUP
  22.                 MOV     DS,AX
  23.                 MOV     AX,SS
  24.                 ADD     AX,PALETTE
  25.                 MOV     FS,AX
  26.         MOV     AX,13H
  27.                 INT     10H
  28.                 XOR     SI,SI
  29.                 MOV     CX,255
  30.                 XOR     BL,BL
  31. SETCOLORSCIK:   MOV     DX,3C8H
  32.                 MOV     AL,BL
  33.                 OUT     DX,AL
  34.                 INC     DX
  35.                 LODS    BYTE PTR FS:[SI]
  36.         OUT     DX,AL
  37.                 LODS    BYTE PTR FS:[SI]
  38.         OUT     DX,AL
  39.                 LODS    BYTE PTR FS:[SI]
  40.         OUT     DX,AL
  41.                 INC     BL
  42.                 LOOP    SETCOLORSCIK
  43.                 MOV     CX,1500
  44.         XOR     SI,SI
  45.                 MOV     AX,SS
  46.                 ADD     AX,EXTERNDATA
  47.                 MOV     FS,AX
  48. RESETPDCIK:     MOV     AX,HEADDATA[SI]
  49.                 MOV     FS:[SI],AX
  50.                 MOV     FS:[SI+3000],WORD PTR 0FFFFH
  51.                 ADD     SI,2
  52.                 LOOP    RESETPDCIK
  53.         MOV    AX,0A000H
  54.         MOV    ES,AX
  55.         MOV     AX,8
  56.                 MOV     CX,0
  57.                 MOV     DX,512
  58.                 INT     33H
  59.                 RET
  60.  
  61. SETHEADDATA:    PUSHA
  62.         XOR     SI,SI
  63.                 MOV     AX,-80
  64.                 MOV     CX,5
  65. SETZPOSCIK:     PUSH    CX
  66.                 MOV     BX,-90
  67.                 MOV     CX,10
  68. SETYPOSCIK:     PUSH    CX
  69.                 MOV     DX,-90
  70.                 MOV     CX,10
  71. SETXPOSCIK:     MOV     HEADDATA[SI],DX
  72.                 MOV     FS:[SI],DX
  73.                 MOV     HEADDATA[SI+2],BX
  74.                 MOV     FS:[SI+2],BX
  75.                 MOV     HEADDATA[SI+4],AX
  76.                 MOV     FS:[SI+4],AX
  77.         ADD     SI,6
  78.                 ADD     DX,20
  79.                 LOOP    SETXPOSCIK
  80.                 POP     CX
  81.                 ADD     BX,20
  82.                 LOOP    SETYPOSCIK
  83.                 POP     CX
  84.                 ADD     AX,40
  85.                 LOOP    SETZPOSCIK
  86.         POPA
  87.                 RET
  88.  
  89. PUTHEAD:        PUSHA
  90.                 MOV     CX,500
  91.                 XOR     SI,SI
  92.                 MOV     BP,3000
  93. PUTHEADCIK:     MOV     DI,FS:[BP]
  94.                 MOV     BYTE PTR ES:[DI],0
  95.         PUSH    BP
  96.         MOV     AX,FS:[SI]
  97.                 MOV     BX,EYEDISTANCE2
  98.                 IMUL    BX
  99.                 ADD     BX,FS:[SI+4]
  100.                 ADD     BX,ORIGO_Z2
  101.                 IDIV    BX
  102.                 MOV     BP,BX
  103.         ADD     AX,ORIGO_X2
  104.                 MOV     BX,0FFFFH
  105.                 CMP     AX,319
  106.                 JA      NOPUTPIXEL
  107.                 MOV     DI,AX
  108.                 MOV     AX,FS:[SI+2]
  109.                 MOV     BX,EYEDISTANCE2
  110.                 IMUL    BX
  111.                 MOV     BX,BP
  112.                 IDIV    BX
  113.         ADD     AX,ORIGO_Y2
  114.                 MOV     BX,0FFFFH
  115.                 CMP     AX,199
  116.                 JA      NOPUTPIXEL
  117.         MOV    DX,AX
  118.         SHL    DX,8
  119.         SHL    AX,6
  120.         ADD    AX,DX
  121.  
  122.         ADD     DI,AX
  123.                 MOV     BX,DI
  124.                 MOV     AX,BP
  125.                 SHR     AX,3
  126.                 INC     AL
  127.         MOV     ES:[DI],AL
  128. NOPUTPIXEL:     POP     BP
  129.                 MOV    FS:[BP],DI
  130.                 ADD     SI,6
  131.                 ADD     BP,2
  132.                 DEC    CX
  133.         JNZ    PUTHEADCIK
  134.         POPA
  135.                 RET
  136.  
  137. START:          CALL    STARTUP
  138.                 CALL    SETHEADDATA
  139.  
  140. MAINCIK:        MOV     DX,3DAH
  141. WAITR:          IN      AL,DX
  142.                 TEST    AL,8
  143.                 JZ      WAITR
  144.  
  145.         CALL    RTIMEON
  146.  
  147.                 CALL    PUTHEAD
  148.                 MOV    AX,3
  149.                 INT    33H
  150.                 MOV    ORIGO_Z2,512
  151.         SUB    ORIGO_Z2,DX
  152.         XOR    AX,AX
  153.         XOR    SI,SI
  154.         XOR    CX,CX
  155.  
  156.         TEST    BX,1
  157.                 JZ    NOLEFTPUSH
  158.                 MOV    AX,1
  159. NOLEFTPUSH:     TEST    BX,2
  160.                 JZ    NORIGHTPUSH
  161.         MOV    CX,1
  162. NORIGHTPUSH:    TEST    BX,4
  163.                 JZ    NOMEDPUSH
  164.         MOV    SI,1
  165. NOMEDPUSH:      MOV    BX,SI
  166.         CALL    ADDROTATEANGLE
  167.         MOV    CX,500
  168.         MOV    AX,DS
  169.         LEA    SI,HEADDATA
  170.         MOV    BX,SS
  171.         ADD    BX,EXTERNDATA
  172.         XOR    DI,DI
  173.         CALL    ROTATEPOINTS
  174.         CALL    RTIMEOFF
  175.         MOV    AH,1
  176.                 INT    16H
  177.                 JZ    NOEXIT
  178.                 XOR    AH,AH
  179.                 INT    16H
  180.                 MOV    AX,3
  181.                 INT    10H
  182.                 MOV    AH,4CH
  183.                 INT    21H
  184. NOEXIT:         JMP    MAINCIK
  185.  
  186. END     START
  187.