Wacky_rubia

tetris

May 11th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model tiny
  2. .code
  3. org 100h
  4. locals
  5.  
  6. @main:
  7.         jmp @start
  8.  
  9. save_mode db ? ; Сохранить текущий видео режим
  10. cell_size db 10
  11. video_page dd 0a0000h
  12.  
  13. change_video_mode proc
  14.         push bp
  15.         mov bp, sp
  16.         push ax
  17.  
  18. ; Схраняем текущий видео режим
  19.         mov ah,0Fh
  20.         int 10h
  21.         mov save_mode,al
  22.  
  23. ; ; Переключиться в графический режим
  24.  
  25.         mov ah,0 ; установка видео режима
  26.         mov al, 10h ; 640 X 350, 16 colors
  27.         int 10h
  28.         pop ax bp
  29.         ret
  30. change_video_mode endp
  31.  
  32. return_video_mode proc
  33.         push bp
  34.         mov bp, sp
  35.         push ax
  36.  
  37.         mov ah,0
  38.         mov al, save_mode
  39.         int 10h
  40.         pop ax bp
  41.         ret
  42. return_video_mode endp
  43.  
  44. print_point proc
  45.         ;x, y, color
  46.         push bp
  47.         mov bp, sp
  48.         push ax cx di dx es
  49.  
  50.         mov ax,0A000h
  51.         mov es,ax
  52.  
  53.         mov ax, [bp + 6] ; up
  54.         mov cx, 320
  55.         mul cx
  56.         add ax, [bp + 8] ; left
  57.         mov di, ax
  58.  
  59.         mov ax, [bp + 4] ; color
  60.         mov cx, 10
  61. @1:
  62.         mov [di], ax
  63.         dec cx
  64.         cmp cx, 0
  65.         jne @1
  66.         ; stosb
  67.         ; rep stosb
  68.  
  69.         pop es dx di cx ax bp
  70.         ret 6
  71. print_point endp
  72.  
  73. print_cell proc
  74.        
  75.  
  76. print_cell endp
  77.  
  78. @start:
  79.         call change_video_mode
  80.         mov ax, 20
  81.         push ax
  82.         mov ax, 40
  83.         push ax
  84.         mov ax, 50h
  85.         push ax
  86.         call print_point
  87.  
  88.         mov ah,0
  89.         int 16h
  90.         call return_video_mode
  91.         ret
  92. end @main
Advertisement
Add Comment
Please, Sign In to add comment