1866 jmp start vid_seg dw 0a000 scr_offs dw 76 sprit_tab: dw sin_tab dw sin_tab2 dw sin_tab+4 dw sin_tab2+2 dw sin_tab+8 dw sin_tab2+4 dw sin_tab+12 dw sin_tab2+6 dw sin_tab+16 dw sin_tab2+8 dw sin_tab+20 dw sin_tab2+10 dw sin_tab+24 dw sin_tab2+12 dw sin_tab+28 dw sin_tab2+14 dw sin_tab+32 dw sin_tab2+16 dw sin_tab+36 dw sin_tab2+18 dw sin_tab+40 dw sin_tab2+20 dw sin_tab+44 dw sin_tab2+22 dw sin_tab+48 dw sin_tab2+24 dw sin_tab+52 dw sin_tab2+26 dw sin_tab+56 dw sin_tab2+28 dw sin_tab+60 dw sin_tab2+30 dw sin_tab+64 dw sin_tab2+32 dw sin_tab+68 dw sin_tab2+34 dw sin_tab+72 dw sin_tab2+36 dw sin_tab+76 dw sin_tab2+38 RADIX 2 boll: dw 0000000111111111,1111111110000000 dw 0001111111111111,1111111111111000 dw 0011111111111111,1111111111111100 dw 0111111111111111,1111111111111110 dw 0111111111111111,1111111111111110 dw 0111111111111111,1111111111111110 dw 0111111111111111,1111111111111110 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 1111111111111111,1111111111111111 dw 0111111111111111,1111111111111110 dw 0111111111111111,1111111111111110 dw 0111111111111111,1111111111111110 dw 0011111111111111,1111111111111100 dw 0001111111111111,1111111111111000 dw 0000001111111111,1111111111000000 RADIX sin_tab: dw 0,0,0,0,0,0,0,0,0 dw 0,80,80,160,160,240,320,400,480,560 dw 640,720,800,880,1040,1120,1200,1360,1520,1600 dw 1760,1920,2080,2240,2400,2560,2720,2880,3120,3280 dw 3520,3680,3920,4160,4320,4560,4800,5040,5280,5520 dw 5840,6080,6320,6640,6320,6080,5840,5520,5280,5040 dw 4800,4560,4320,4160,3920,3680,3520,3280,3120,2880 dw 2720,2560,2400,2240,2080,1920,1760,1600,1520,1360 dw 1200,1120,1040,880,800,720,640,560,480,400 dw 320,240,160,160,80,80,-1 sin_tab2: dw 0,0,0,0,80,240,400,560,800,1040,1360 dw 1680,2000,2320,2720,3120,3520,3920,4320,4720,5120 dw 5440,5840,6160,6480,6800,7040,7280,7520,7680,7840 dw 7920,7920,7920,7920,7840,7760,7600,7440,7200,6960 dw 6720,6400,6080,5680,5360,4960,4560,4160,3760,3360 dw 2960,2640,2240,1920,1520,1280,960,720,480,320 dw 160,80,-1 end_tab: mov bx,sin_tab jmp go_stud end_tab2: mov bx,sin_tab2 jmp go_stud2 start: mov es,vid_seg mov cx,64 mov si,0 rot_loop: ;Rotate words in ball image for correct rol w[boll+si],8 ;output to video RAM add si,2 loop rot_loop mov ah,00H mov al,12H ;Select mode 12H, 640x480 16 colors int 10H mov ah,05H mov al,00H int 10H push bp mov ah,06H ;Clear screen mov al,0 ;Number of lines blanked 0=Entire window mov bh,00H ;Attribute mov ch,0 ;row (y) of upper left corner mov cl,0 ;column (x) upper left corner mov dh,29 ;row (y) lower right corner mov dl,79 ;column(x) lower right corner int 10H pop bp demo_loop: call blatt_boll mov cx,0ff5 delay: loop delay mov ah,01h ;Key pressed? int 16H jz demo_loop ;No,loop mov ah,00H mov al,03H ;Back to text mode int 10H mov ax,04c00 ;Quit program int 33 blatt_boll: mov bp,sprit_tab mov cx,20 blatt_loop: push cx push scr_offs mov bx,[bp] go_stud: mov dx,[bx] inc bx,2 cmp dx,-1 je end_tab add scr_offs,dx mov [bp],bx inc bp,2 mov bx,[bp] go_stud2: mov dx,[bx] inc bx,2 cmp dx,-1 je end_tab2 add scr_offs,dx mov [bp],bx inc bp,2 mov cx,20 mov si,0 push bp mov bp,scr_offs clear_loop: es mov w[bp+si],0 add si,2 es mov w[bp+si],0 add si,78 loop clear_loop mov di,0 mov cx,32 drawloop: mov dx,[boll+di] es mov w[bp+si],dx add si,2 add di,2 mov dx,[boll+di] es mov w[bp+si],dx add si,78 add di,2 loop drawloop mov cx,20 clear_loop2: es mov w[bp+si],0 add si,2 es mov w[bp+si],0 add si,78 loop clear_loop2 pop bp pop scr_offs dec scr_offs,4 pop cx dec cx cmp cx,0 je ready jmp blatt_loop ready: ret . 0