]> 4ch.mooo.com Git - plz.git/blobdiff - copper.asm
wwww
[plz.git] / copper.asm
index cbc118ee0980a1493aa7df9e1c38780f5dd92a2c..77e5c5024ea3f84910670ee7c674d5f961a28f08 100755 (executable)
-.8087
-               PUBLIC  _frame_count
-               PUBLIC  _cop_drop
-               PUBLIC  _cop_pal
-               PUBLIC  _do_pal
-               PUBLIC  _cop_start
-               PUBLIC  _cop_scrl
-               PUBLIC  _cop_plz
-               PUBLIC  _close_copper
-               PUBLIC  _init_copper
-               PUBLIC  _pompota
-               PUBLIC  _moveplz
-               PUBLIC  _fadepal
-               PUBLIC  _cop_fadepal
-               EXTRN   _k1:BYTE
-               EXTRN   _k2:BYTE
-               EXTRN   _k3:BYTE
-               EXTRN   _k4:BYTE
-               EXTRN   _l1:BYTE
-               EXTRN   _l2:BYTE
-               EXTRN   _l3:BYTE
-               EXTRN   _l4:BYTE
-               EXTRN   _il1:BYTE
-               EXTRN   _il2:BYTE
-               EXTRN   _il3:BYTE
-               EXTRN   _il4:BYTE
-               EXTRN   _ik1:BYTE
-               EXTRN   _ik2:BYTE
-               EXTRN   _ik3:BYTE
-               EXTRN   _ik4:BYTE
-DGROUP         GROUP   _DATA
-COPPER_TEXT            SEGMENT WORD PUBLIC USE16 'CODE'
-               ASSUME CS:COPPER_TEXT, DS:DGROUP, SS:DGROUP
-_frame_count:
-       add             byte ptr [bx+si],al
-_cop_drop:
-       add             byte ptr [bx+si],al
-_cop_pal:
-       add             byte ptr [bx+si],al
-L$1:
-       add             byte ptr [bx+si],al
-_do_pal:
-       add             byte ptr [bx+si],al
-_cop_start:
-    DB 0
-L$2:
-    DB 0
-_cop_scrl:
-       add             byte ptr [bx+si],al
-_cop_plz:
-       add             word ptr [bx+si],ax
-_close_copper: .global
-       mov             bx,7
-       mov             ax,0
-       mov             cx,0
-       mov             dx,0
-       int             0fcH
-       mov             bx,7
-       mov             ax,1
-       mov             cx,0
-       mov             dx,0
-       int             0fcH
-       mov             bx,7
-       mov             ax,2
-       mov             cx,0
-       mov             dx,0
-       int             0fcH
-       retf
-_init_copper: .global
-       mov             bx,7
-       mov             ax,1
-       mov             cx,offset copper1
-       mov             dx,COPPER_TEXT
-       int             0fcH
-       mov             bx,7
-       mov             ax,2
-       mov             cx,offset copper2
-       mov             dx,COPPER_TEXT
-       int             0fcH
-       mov             bx,7
-       mov             ax,0
-       mov             cx,offset copper3
-       mov             dx,COPPER_TEXT
-       int             0fcH
-       retf
-copper1:
-       mov             dx,3d4H
-       mov             al,0dH
-       mov             ah,byte ptr cs:_cop_start
-       out             dx,ax
-       mov             al,0cH
-       mov             ah,byte ptr cs:L$2
-       out             dx,ax
-       mov             dx,3c0H
-       mov             al,33H
-       out             dx,al
-       mov             ax,word ptr cs:_cop_scrl
-       out             dx,al
-       retf
-copper2:
-       ;pusha
-       push    AX
-       push    CX
-       push    DX
-       push    BX
-       push    SP
-       push    BP
-       push    SI
-       push    DI
-       push            ds
-       inc             word ptr cs:_frame_count
-       cmp             word ptr cs:_do_pal,0
-       je              L$3
-       lds             si,dword ptr cs:_cop_pal
-       mov             cx,300H
-       mov             dx,3c8H
-       mov             al,0
-       out             dx,al
-       inc             dx
-       ;rep outsb
-       movsb
-       movsb
-       mov             word ptr cs:_do_pal,0
-L$3:
-       cmp             word ptr cs:_cop_plz,0
-       je              L$4
-       push            cs
-       call            near ptr _pompota
-       push            cs
-       call            near ptr _moveplz
-L$4:
-       cmp             word ptr cs:_cop_drop,0
-       je              L$5
-       push            cs
-       call            near ptr L$14
-L$5:
-       pop             ds
-       ;;;;popa
-       pop     AX
-       pop     CX
-       pop     DX
-       pop     BX
-       pop     SP
-       pop     BP
-       pop     SI
-       pop     DI
-       retf
-copper3:
-       retf
-L$6:
-    DB 0
-_pompota:
-       mov             word ptr cs:0cH,4
-       mov             dx,3d4H
-       mov             ax,3c18H
-       out             dx,ax
-       mov             ax,0f07H
-       out             dx,ax
-       mov             ax,3c18H
-       inc             byte ptr cs:L$6
-       test            byte ptr cs:L$6,1
-       je              L$7
-       mov             word ptr cs:_cop_scrl,0
-       mov             ax,3d18H
-L$7:
-       out             dx,ax
-       retf
-_moveplz:
-       ;;;;push                ds
-       ;;;;push                seg _k1
-       ;;;;pop         ds
-       add             word ptr DGROUP:_k1,0fffdH
-       and             word ptr DGROUP:_k1,0fffH
-       add             word ptr DGROUP:_k2,0fffeH
-       and             word ptr DGROUP:_k2,0fffH
-       add             word ptr DGROUP:_k3,1
-       and             word ptr DGROUP:_k3,0fffH
-       add             word ptr DGROUP:_k4,2
-       and             word ptr DGROUP:_k4,0fffH
-       add             word ptr DGROUP:_l1,0ffffH
-       and             word ptr DGROUP:_l1,0fffH
-       add             word ptr DGROUP:_l2,0fffeH
-       and             word ptr DGROUP:_l2,0fffH
-       add             word ptr DGROUP:_l3,2
-       and             word ptr DGROUP:_l3,0fffH
-       add             word ptr DGROUP:_l4,3
-       and             word ptr DGROUP:_l4,0fffH
-       pop             ds
-       retf
-L$8:
-       cmp             al,0
-       cmp             al,0
-       cmp             al,0
-       cmp             al,0
-       cmp             ax,3e00H
-       add             byte ptr [bx],bh
-       add             byte ptr [bx+si],al
-       inc             cx
-       add             byte ptr [bp+si],al
-       inc             sp
-       add             byte ptr [bp],al
-       dec             ax
-       add             byte ptr [bp+si],cl
-       dec             sp
-       add             byte ptr [bp],cl
-       push            cx
-       add             byte ptr [si],dl
-       push            di
-       add             byte ptr [bp+si],bl
-       pop             bp
-       add             byte ptr [bx+si],ah
-       add             byte ptr fs:[bx+si],ch
-       ;;;;insb
-       add             byte ptr [bx+si],dh
-       je              L$9
-L$9:
-       jns             L$10
-L$10:
-       jge             L$11
-L$11:
-       add             byte ptr [bx+si],87H
-       add             byte ptr -6e00H[si],cl
-       add             byte ptr -6300H[bx],dl
-       add             byte ptr -5800H[bp+si],ah
-       add             byte ptr -4b00H[bp],ch
-       add             byte ptr -3e00H[bp+di],bh
-       add             cl,cl
-       add             al,dl
-       add             bh,dl
-       add             dh,bl
-       add             ch,ah
-       add             ch,ch
-       add             ch,dh
-       add             ch,bh
-       add             byte ptr [di],al
-       add             word ptr [di],cx
-       add             word ptr ds:[1f01H],dx
-       add             word ptr [bx],sp
-       add             word ptr [bx+si],si
-       add             word ptr [bx+di],di
-       add             word ptr 1[bp+di],ax
-       dec             sp
-       add             word ptr 1[bp],dx
-       ;;;;pusha
-       push    AX
-       push    CX
-       push    DX
-       push    BX
-       push    SP
-       push    BP
-       push    SI
-       push    DI
-       add             word ptr 1[bp+si],bp
-       je              L$12
-    DB 7eH
-L$12:
-    DD L$13
-L$13:
-    DB 1
-_fadepal:
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-_cop_fadepal:
-       add             byte ptr [bx+si],al
-       add             byte ptr [bx+si],al
-L$14:
-       inc             word ptr cs:2
-       cmp             word ptr cs:_cop_drop,40H
-       ja              L$15
-       push            bx
-       mov             bx,word ptr cs:_cop_drop
-       shl             bx,1
-       add             bx,offset L$8
-       mov             bx,word ptr cs:[bx]
-       mov             dx,3d4H
-       mov             al,18H
-       mov             ah,bl
-       out             dx,ax
-       mov             al,7
-       mov             ah,bh
-       shl             ah,1
-       shl             ah,1
-       shl             ah,1
-       shl             ah,1
-       and             ah,10H
-       or              ah,0fH
-       out             dx,ax
-       pop             bx
-       retf
-L$15:
-       cmp             word ptr cs:_cop_drop,100H
-       jae             L$19
-       cmp             word ptr cs:_cop_drop,80H
-       jae             L$16
-       cmp             word ptr cs:_cop_drop,60H
-       ja              L$19
-L$16:
-       mov             word ptr cs:_cop_pal,offset _fadepal
-       mov             word ptr cs:L$1,COPPER_TEXT
-       mov             word ptr cs:_do_pal,1
-       cmp             word ptr cs:_cop_drop,41H
-       je              L$18
-       mov             dx,3d4H
-       mov             ax,3c18H
-       out             dx,ax
-       mov             ax,0f07H
-       out             dx,ax
-       push            ds
-       push            si
-       push            di
-       push            cx
-       lds             si,dword ptr cs:_cop_fadepal
-       mov             di,offset _fadepal
-       mov             cx,30H
-L$17:
-       mov             ax,word ptr [si]
-       add             byte ptr cs:300H[di],al
-       adc             byte ptr cs:[di],ah
-       mov             ax,word ptr 2[si]
-       add             byte ptr cs:301H[di],al
-       adc             byte ptr cs:1[di],ah
-       mov             ax,word ptr 4[si]
-       add             byte ptr cs:302H[di],al
-       adc             byte ptr cs:2[di],ah
-       mov             ax,word ptr 6[si]
-       add             byte ptr cs:303H[di],al
-       adc             byte ptr cs:3[di],ah
-       mov             ax,word ptr 8[si]
-       add             byte ptr cs:304H[di],al
-       adc             byte ptr cs:4[di],ah
-       mov             ax,word ptr 0aH[si]
-       add             byte ptr cs:305H[di],al
-       adc             byte ptr cs:5[di],ah
-       mov             ax,word ptr 0cH[si]
-       add             byte ptr cs:306H[di],al
-       adc             byte ptr cs:6[di],ah
-       mov             ax,word ptr 0eH[si]
-       add             byte ptr cs:307H[di],al
-       adc             byte ptr cs:7[di],ah
-       mov             ax,word ptr 10H[si]
-       add             byte ptr cs:308H[di],al
-       adc             byte ptr cs:8[di],ah
-       mov             ax,word ptr 12H[si]
-       add             byte ptr cs:309H[di],al
-       adc             byte ptr cs:9[di],ah
-       mov             ax,word ptr 14H[si]
-       add             byte ptr cs:30aH[di],al
-       adc             byte ptr cs:0aH[di],ah
-       mov             ax,word ptr 16H[si]
-       add             byte ptr cs:30bH[di],al
-       adc             byte ptr cs:0bH[di],ah
-       mov             ax,word ptr 18H[si]
-       add             byte ptr cs:30cH[di],al
-       adc             byte ptr cs:0cH[di],ah
-       mov             ax,word ptr 1aH[si]
-       add             byte ptr cs:30dH[di],al
-       adc             byte ptr cs:0dH[di],ah
-       mov             ax,word ptr 1cH[si]
-       add             byte ptr cs:30eH[di],al
-       adc             byte ptr cs:0eH[di],ah
-       mov             ax,word ptr 1eH[si]
-       add             byte ptr cs:30fH[di],al
-       adc             byte ptr cs:0fH[di],ah
-       add             di,10H
-       add             si,20H
-       dec             cx
-       jne             L$17
-       pop             cx
-       pop             di
-       pop             si
-       pop             ds
-       retf
-L$18:
-       mov             dx,3d4H
-       mov             ax,9018H
-       out             dx,ax
-       mov             ax,1f07H
-       out             dx,ax
-       push            cs
-       call            near ptr L$20
-       retf
-L$19:
-       mov             word ptr cs:_cop_drop,0
-       retf
-L$20:
-       push            ax
-       push            ds
-       ;;;;push                seg _k1
-       pop             ds
-       mov             ax,word ptr DGROUP:_il1
-       mov             word ptr DGROUP:_l1,ax
-       mov             ax,word ptr DGROUP:_il2
-       mov             word ptr DGROUP:_l2,ax
-       mov             ax,word ptr DGROUP:_il3
-       mov             word ptr DGROUP:_l3,ax
-       mov             ax,word ptr DGROUP:_il4
-       mov             word ptr DGROUP:_l4,ax
-       mov             ax,word ptr DGROUP:_ik1
-       mov             word ptr DGROUP:_k1,ax
-       mov             ax,word ptr DGROUP:_ik2
-       mov             word ptr DGROUP:_k2,ax
-       mov             ax,word ptr DGROUP:_ik3
-       mov             word ptr DGROUP:_k3,ax
-       mov             ax,word ptr DGROUP:_ik4
-       mov             word ptr DGROUP:_k4,ax
-       pop             ds
-       pop             ax
-       retf
-COPPER_TEXT            ENDS
-_DATA          SEGMENT WORD PUBLIC USE16 'DATA'
-_DATA          ENDS
-               END
+       IDEAL\r
+       MODEL huge\r
+       8087\r
+\r
+EXTRN C l1:word, C l2:word, C l3:word, C l4:word, C k1:word, C k2:word, C k3:word, C k4:word\r
+EXTRN C il1:word, C il2:word, C il3:word, C il4:word, C ik1:word, C ik2:word, C ik3:word, C ik4:word\r
+\r
+CODESEG\r
+\r
+PUBLIC  C frame_count, C init_copper, C close_copper, C cop_drop, C cop_pal, C do_pal\r
+PUBLIC C cop_scrl, C cop_start, C cop_plz\r
+\r
+frame_count    dw       0\r
+cop_drop       dw      0\r
+cop_pal                dd      0\r
+do_pal         dw      0\r
+cop_start      dw      0\r
+cop_scrl       dw      0\r
+cop_plz                dw      1\r
+\r
+PROC   close_copper\r
+\r
+       mov     bx, 7\r
+       mov     ax, 0\r
+       mov     cx, 0\r
+       mov     dx, 0\r
+       int     0fch\r
+\r
+       mov     bx, 7\r
+       mov     ax, 1\r
+       mov     cx, 0\r
+       mov     dx, 0\r
+       int     0fch\r
+\r
+       mov     bx, 7\r
+       mov     ax, 2\r
+       mov     cx, 0\r
+       mov     dx, 0\r
+       int     0fch\r
+\r
+       ret\r
+ENDP\r
+\r
+PROC   init_copper\r
+\r
+       mov     bx, 7\r
+       mov     ax, 1\r
+       mov     cx, OFFSET copper1\r
+       mov     dx, SEG copper1\r
+       int     0fch\r
+\r
+       mov     bx, 7\r
+       mov     ax, 2\r
+       mov     cx, OFFSET copper2\r
+       mov     dx, SEG copper2\r
+       int     0fch\r
+\r
+       mov     bx, 7\r
+       mov     ax, 0\r
+       mov     cx, OFFSET copper3\r
+       mov     dx, SEG copper3\r
+       int     0fch\r
+\r
+       ret\r
+ENDP\r
+\r
+PROC   copper1\r
+\r
+       mov     dx, 03d4h\r
+       mov     al, 0dh\r
+       mov     ah, [Byte cs:cop_start]\r
+       out     dx, ax\r
+       mov     al, 0ch\r
+       mov     ah, [Byte cs:cop_start+1]\r
+       out     dx, ax\r
+\r
+       mov     dx, 3c0h\r
+       mov     al, 33h\r
+       out     dx, al\r
+       mov     ax, [cs:cop_scrl]\r
+       out     dx, al\r
+\r
+       retf\r
+ENDP\r
+\r
+PROC   copper2\r
+\r
+       ;pusha\r
+       push    AX\r
+       push    CX\r
+       push    DX\r
+       push    BX\r
+       push    SP\r
+       push    BP\r
+       push    SI\r
+       push    DI\r
+\r
+       push    ds\r
+\r
+       inc     [cs:frame_count]\r
+\r
+       cmp     [cs:do_pal], 0d\r
+       je      @@no_pal\r
+       lds     si, [cs:cop_pal]\r
+       mov     cx, 768d\r
+       mov     dx, 3c8h\r
+       mov     al, 0d\r
+       out     dx, al\r
+       inc     dx\r
+       ;rep    outsb\r
+       movsb\r
+       movsb\r
+       mov     [cs:do_pal], 0d\r
+@@no_pal:\r
+       cmp     [cs:cop_plz], 0d\r
+       je      @@l3\r
+       call    pompota\r
+       call    moveplz\r
+@@l3:\r
+       cmp     [cs:cop_drop], 0d\r
+       je      @@l1\r
+       call    do_drop\r
+@@l1:\r
+       pop     ds\r
+       ;popa\r
+       pop     AX\r
+       pop     CX\r
+       pop     DX\r
+       pop     BX\r
+       pop     SP\r
+       pop     BP\r
+       pop     SI\r
+       pop     DI\r
+\r
+       retf\r
+ENDP\r
+\r
+PROC   copper3\r
+       retf\r
+ENDP\r
+\r
+pompi   db      0\r
+\r
+PUBLIC C pompota\r
+\r
+PROC    pompota\r
+\r
+       mov     [cs:cop_scrl], 4d\r
+       mov     dx, 3d4h\r
+       mov     ax, 3c18h\r
+       out     dx, ax\r
+       mov     ax, 0f07h\r
+       out     dx, ax                  ; 8th bit\r
+       mov     ax, 3c18h\r
+       inc     [cs:pompi]\r
+       test    [cs:pompi], 1d\r
+       jz       @@l1\r
+       mov     [cs:cop_scrl], 0d\r
+       mov     ax, 3d18h\r
+@@l1:\r
+       out     dx, ax\r
+       ret\r
+ENDP\r
+\r
+PUBLIC C moveplz\r
+\r
+PROC moveplz\r
+\r
+       push    ds\r
+       ;;;;push    SEG k1\r
+       pop     ds\r
+\r
+       add     [ds:k1], -3d\r
+       and     [ds:k1], 4095d\r
+       add     [ds:k2], -2d\r
+       and     [ds:k2], 4095d\r
+       add     [ds:k3], 1d\r
+       and     [ds:k3], 4095d\r
+       add     [ds:k4], 2d\r
+       and     [ds:k4], 4095d\r
+\r
+       add     [ds:l1], -1d\r
+       and     [ds:l1], 4095d\r
+       add     [ds:l2], -2d\r
+       and     [ds:l2], 4095d\r
+       add     [ds:l3], 2d\r
+       and     [ds:l3], 4095d\r
+       add     [ds:l4], 3d\r
+       and     [ds:l4], 4095d\r
+\r
+       pop     ds\r
+       ret\r
+ENDP\r
+\r
+LABEL  dtau Word\r
+ccc=0\r
+cccc=0\r
+REPT   65                              ; 43=dy*512/dt\r
+       dw      ccc*ccc/4*43/128+60\r
+ccc=ccc+1\r
+ENDM\r
+\r
+PUBLIC C fadepal\r
+fadepal                db      768*2 dup(?)\r
+\r
+PUBLIC C cop_fadepal\r
+cop_fadepal    dd      0\r
+\r
+PROC   do_drop\r
+\r
+       inc     [cs:cop_drop]\r
+       cmp     [cs:cop_drop], 64d\r
+       ja      @@over\r
+\r
+       push    bx\r
+       mov     bx, [cs:cop_drop]\r
+       shl     bx, 1d\r
+       add     bx, OFFSET dtau\r
+\r
+       mov     bx, [cs:bx]\r
+       mov     dx, 3d4h\r
+       mov     al, 18h         ; linecompare\r
+       mov     ah, bl\r
+       out     dx, ax\r
+       mov     al, 07h\r
+       mov     ah, bh\r
+       shl     ah, 1d\r
+       shl     ah, 1d\r
+       shl     ah, 1d\r
+       shl     ah, 1d\r
+       and     ah, 10h\r
+       or      ah, 0fh\r
+       out     dx, ax                  ; 8th bit\r
+\r
+       pop     bx\r
+       ret\r
+\r
+@@over:\r
+       cmp     [cs:cop_drop], 256d\r
+       jae     end_\r
+       cmp     [cs:cop_drop], 128\r
+       jae     @@lll\r
+       cmp     [cs:cop_drop], 64+32d\r
+       ja      end_\r
+\r
+@@lll: mov     [Word cs:cop_pal], OFFSET fadepal\r
+       mov     [Word cs:cop_pal+2], SEG fadepal\r
+       mov     [do_pal], 1d\r
+\r
+       cmp     [cs:cop_drop], 65\r
+       je      l5\r
+\r
+       mov     dx, 3d4h\r
+       mov     ax, 3c18h\r
+       out     dx, ax\r
+       mov     ax, 0f07h\r
+       out     dx, ax                  ; 8th bit\r
+\r
+       push    ds\r
+       push si\r
+       push di\r
+       push cx\r
+\r
+       lds     si, [cs:cop_fadepal]\r
+       mov     di, OFFSET fadepal\r
+       mov     cx, 768/16d\r
+@@l4:\r
+       ccc=0\r
+       REPT    16\r
+       mov     ax, [ds:si+ccc*2]\r
+       add     [cs:di+ccc+768], al\r
+       adc     [cs:di+ccc], ah\r
+       ccc=ccc+1\r
+       ENDM\r
+       add     di, 16d\r
+       add     si, 32d\r
+       dec     cx\r
+       jnz     @@l4\r
+\r
+       pop     cx\r
+       pop     di\r
+       pop     si\r
+       pop     ds\r
+       ret\r
+l5:\r
+       mov     dx, 3d4h\r
+       mov     ax, 9018h\r
+       out     dx, ax\r
+       mov     ax, 1f07h\r
+       out     dx, ax                  ; 8th bit\r
+\r
+       call    initpparas\r
+       ret\r
+end_:\r
+       mov     [cs:cop_drop], 0d\r
+       ret\r
+ENDP\r
+\r
+PROC   initpparas\r
+       push    ax\r
+       push    ds\r
+       ;;;;push    SEG k1\r
+       pop     ds\r
+\r
+       mov     ax, [ds:il1]\r
+       mov     [ds:l1], ax\r
+       mov     ax, [ds:il2]\r
+       mov     [ds:l2], ax\r
+       mov     ax, [ds:il3]\r
+       mov     [ds:l3], ax\r
+       mov     ax, [ds:il4]\r
+       mov     [ds:l4], ax\r
+\r
+       mov     ax, [ds:ik1]\r
+       mov     [ds:k1], ax\r
+       mov     ax, [ds:ik2]\r
+       mov     [ds:k2], ax\r
+       mov     ax, [ds:ik3]\r
+       mov     [ds:k3], ax\r
+       mov     ax, [ds:ik4]\r
+       mov     [ds:k4], ax\r
+\r
+       pop     ds\r
+       pop     ax\r
+       ret\r
+ENDP\r
+\r
+END\r
+\r