Функции для работы с XMode (320x200x256)

Функции для работы с XMode (320x200x256)

Функции для работы с XMode (320x200x256)

Эхххх, какой был видео-режим…какие для него писали демки.

Приведенный ниже код содержит простейшие функции для работы с XMode: включить режим, восстановить режим, вывести точку, изменить палитру, подождать обратного хода луча (интересно, как это выглядит на LCD мониторах :)), вывести символ и очистить экран.

Вообще приведенный код вряд ли может быть использован для дела… разве что лабораторные сдавать или поэкспериментировать…или так, для истории :)

  1. SMART
  2.  
  3. CODE SEGMENT
  4. ASSUME cs:Code
  5.  
  6. P386
  7.  
  8. PUBLIC _mSetMode
  9. PUBLIC _mRestoreMode
  10. PUBLIC _mPutPixel
  11. PUBLIC _mWaitRetRace
  12. PUBLIC _mChangePalette
  13. PUBLIC _mWriteSymb
  14. PUBLIC _mClrScr
  15.  
  16. PUBLIC _OldMode
  17.  
  18. _OLDMODE DB 0
  19.  
  20. ;################## SetMode ##################################################
  21. _mSetMode PROC Far
  22. mov ah,0Fh
  23. int 10h
  24. mov [_OldMode],Al
  25. mov ax,0013h ; 320x200x256
  26. int 10h
  27. ret
  28. _mSetMode ENDP
  29. ;################## SetMode ##################################################
  30. _mRestoreMode PROC Far
  31. xor ah,ah
  32. mov al,[_OldMode]
  33. int 10h
  34. ret
  35. _mRestoreMode ENDP
  36. ;################## PutPixel #################################################
  37. _mPutPixel PROC Far
  38. push bp
  39. mov bp,sp
  40. mov ax,0A000h
  41. mov es,ax
  42. mov cx,320
  43. mov ax,ss:[bp+08] ;Y
  44. mov bx,ss:[bp+10] ;X
  45. mul cx
  46. add ax,bx
  47. mov dx,ss:[bp+06] ;Color
  48. mov di,ax
  49. mov Byte Ptr es:[di],dl
  50. pop bp
  51. ret 6
  52. _mPutPixel ENDP
  53. ;################## WaitRetRace ##############################################
  54. _mWaitRetRace PROC Far
  55. mov dx,03DAh
  56. RetR1: in al,dx
  57. test al,08h
  58. jne RetR1
  59. RetR2: in al,dx
  60. test al,08h
  61. je RetR2
  62. ret
  63. _mWaitRetRace ENDP
  64. ;################## ChangePalette ############################################
  65. _mChangePalette PROC Far
  66. push bp
  67. mov bp,sp
  68. mov ax, ss:[bp+12]
  69. mov dx, 3C8h
  70. out dx, al
  71. inc dx ;DX = 3C9h (Pal DATA REG)
  72. mov ax, ss:[bp+10]
  73. out dx, al ;красная составляющая
  74. mov ax, ss:[bp+08]
  75. out dx, al ;зеленая составляющая
  76. mov ax, ss:[bp+06]
  77. out dx, al ;синяя составляющая
  78. pop bp
  79. ret 8
  80. _mChangePalette ENDP
  81. ;############## Write ########################################################
  82. _mWriteSymb PROC Far
  83. push bp
  84. mov bp,sp ;6-Символ
  85. mov ax,[bp+10] ;8-Color
  86. mov dh,al ;10-Y
  87. mov bx,[bp+12] ;12-X
  88. mov dl,bl
  89. mov ah,02h
  90. int 10h
  91. mov cx,1
  92. mov ax,[bp+06]
  93. xor ah,ah
  94. mov bx,[bp+08]
  95. mov ah,09h
  96. int 10h
  97. pop bp
  98. ret 8
  99. _mWriteSymb ENDP
  100. ;############## Clear Screen #################################################
  101. _mClrScr PROC Far
  102. push es
  103. push 0A000h
  104. pop es
  105. xor di,di
  106. xor eax,eax
  107. mov cx,16000
  108. rep stosd
  109. pop es
  110. ret
  111. _mClrScr ENDP
  112. CODE ENDS
  113. END

Download this code: xmode.asm

Комментарии