home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / DEMOSCENE-STUFF / TIMESRC.ZIP / V.ASM < prev    next >
Assembly Source File  |  1994-02-26  |  6KB  |  220 lines

  1.         .386p
  2. code32  segment para public use32
  3.         assume cs:code32, ds:code32
  4.  
  5. include pmode.inc
  6. include argc.inc
  7. include vrt.inc
  8. include kb.inc
  9. include gnbg.inc
  10. include muz.inc
  11. include grfx.inc
  12. include end.inc
  13.  
  14. extrn   _l0_setup:near, _l0start:near, _l1start:near, _l2start:near
  15.  
  16. public  _main
  17.  
  18. public  _pals_ptr, _pals_len, _pals_index, _bufptr
  19. public  _bufsel, _vidsel, _loop, _ending, _cpal, _bpal
  20. public  _l0rout, _l1rout, _l2rout, _l1stop, _l1on, _l2on, _l2order
  21.  
  22. public  _done, _pals
  23.  
  24. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  25. ; DATA
  26. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  27. align 4
  28. _l0rout         dd      _l0start
  29. _l1rout         dd      _l1start        ;                                    |
  30. _l2rout         dd      _l2start        ;                                    |
  31.  
  32. _l1stop         db      0
  33. _l1on           db      0
  34. _l2on           db      0
  35. _l2order        db      0
  36.  
  37. align 4
  38. _pals_ptr       dd      ?               ; ptr to RGB data for pal slide
  39. _pals_len       dw      ?               ; number of colors to slide
  40. _pals_index     db      ?               ; first color to slide
  41.  
  42. align 4
  43. _bufptr         dd      ?               ; ptr to 256x256 virtual screen
  44.  
  45. _loop           dd      0               ; loop counter
  46.  
  47. _bufsel         dw      ?               ; selector of 256x256 virtual screen
  48. _vidsel         dw      ?               ; selector of beginning of real vidmem
  49.  
  50. _skipend        db      0               ; skip end screen
  51. _ending         db      0               ; demo is ending
  52.  
  53. _cpal           db      300h dup(0)
  54. _bpal           db      300h dup(0)
  55.  
  56. copyrightmsg    db      'Timeless: Copywrong (c) 1994, Tran (a.k.a. Thomas Pytel).',0dh,0ah,0dh,0ah,36
  57. byemsg          db      'Cogito ergo sum... NOT!$'
  58. errmsg0         db      'Not enough low memory!!!',7,36
  59.  
  60. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  61. ; CODE
  62. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  63.  
  64. include pdoschar.rt
  65. include pdosmsg.rt
  66. include slbytet.rt
  67. include gm56.rt
  68.  
  69. @set_palso      macro   index, len, ptr
  70.         mov _pals_ptr,offset &ptr
  71.         mov _pals_index,&index
  72.         mov _pals_len,&len
  73.         mov _vrt_rout,offset _pals
  74. endm
  75.  
  76. @set_palo       macro   index, len, ptr
  77.         mov esi,offset &ptr
  78.         mov _vrt_palptr,esi
  79.         mov ecx,&index
  80.         mov _vrt_palindex,cl
  81.         lea edi,[ecx*2+ecx+offset _cpal]
  82.         mov ecx,&len
  83.         mov _vrt_pallen,cx
  84.         lea ecx,[ecx*2+ecx]
  85.         rep movsb
  86. endm
  87.  
  88. include misc.m
  89.  
  90. ;═════════════════════════════════════════════════════════════════════════════
  91. _pals:
  92.         cmp _vrt_pallen,0
  93.         jne _ret
  94.         push ebx edi
  95.         movzx ecx,_pals_len
  96.         lea eax,[ecx-1]
  97.         shr al,7
  98.         mov _vrt_pallen,cx
  99.         lea ecx,[ecx*2+ecx]
  100.         movzx ebx,_pals_index
  101.         mov _vrt_palindex,bl
  102.         lea edi,[ebx*2+ebx+offset _cpal]
  103.         mov _vrt_palptr,edi
  104.         mov esi,_pals_ptr
  105.         call _slidebytetbl
  106.         jnc short palsd
  107.         mov _vrt_rout,offset _ret
  108. palsd:
  109.         pop edi ebx
  110.         ret
  111.  
  112. ;═════════════════════════════════════════════════════════════════════════════
  113. exit:
  114.         push edx
  115.         call _vrt_uninit
  116.         call _resetkb
  117.         mov v86r_ax,3
  118.         mov al,10h
  119.         int 33h
  120.         mov edx,offset copyrightmsg
  121.         call _putdosmsg
  122.         call _muz_uninit
  123.         pop edx
  124.         call _putdosmsg
  125.         jmp _exit
  126.  
  127. ;═════════════════════════════════════════════════════════════════════════════
  128. _main:
  129.         sti
  130.  
  131.         call _l0_setup
  132.         call _misc_setup
  133.         call _muz_setup
  134.         call _gm56
  135.         call _initkb
  136.         call _vrt_init
  137.         call _muz_init
  138.         @vrt_setpalo 0,100h,_cpal
  139.  
  140.         mov eax,10000h
  141.         call _getlomem
  142.         mov edx,offset errmsg0
  143.         jc exit
  144.         mov edi,eax
  145.         mov edx,eax
  146.         mov _bufptr,eax
  147.         mov ecx,64*256
  148.         xor eax,eax
  149.         rep stosd
  150.         call _getselector
  151.         add edx,_code32a
  152.         call _setselector
  153.         mov _bufsel,ax
  154.         call _getselector
  155.         mov edx,0a0000h
  156.         call _setselector
  157.         mov _vidsel,ax
  158.  
  159.         mov esi,offset align256start
  160.         mov edi,esi
  161.         and edi,0ffffff00h
  162.         mov ecx,offset align256end
  163.         sub ecx,esi
  164.         rep movsb
  165.  
  166.         call _gnbg_setup
  167.         call _muz_play
  168.         mov fs,_bufsel
  169.  
  170. ;-----------------------------------------------------------------------------
  171. ml0:
  172.         call _l0rout
  173.         call _gnbg_draw
  174.  
  175.         movzx eax,_l2order
  176.         push eax
  177.         call _l1rout[eax*4]
  178.         pop eax
  179.         xor al,1
  180.         call _l1rout[eax*4]
  181.         call _gnbg_flip
  182.  
  183.         cmp _kbtbl1[1],0
  184.         je ml0
  185.         mov _kbtbl1[1],0
  186.  
  187. _done:
  188.         @set_palso 0,100h,_bpal
  189.         call _muz_stop
  190.         mov _ending,1
  191.  
  192. ml1:
  193.         call _l0rout
  194.         call _gnbg_draw
  195.  
  196.         movzx eax,_l2order
  197.         push eax
  198.         call _l1rout[eax*4]
  199.         pop eax
  200.         xor al,1
  201.         call _l1rout[eax*4]
  202.         call _gnbg_flip
  203.  
  204.         cmp _vrt_rout,offset _pals
  205.         je ml1
  206.         call _muz_wait
  207.  
  208. ;-----------------------------------------------------------------------------
  209.         cmp _skipend,0
  210.         jne short mf0
  211.         call _end
  212. mf0:
  213.  
  214.         mov edx,offset byemsg
  215.         jmp exit
  216.  
  217. code32  ends
  218.         end
  219.  
  220.