VESA.ASM 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323
  1. ;THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  2. ;SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
  3. ;END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  4. ;ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  5. ;IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  6. ;SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  7. ;FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  8. ;CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
  9. ;AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
  10. ;COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
  11. ;
  12. ; $Source: f:/miner/source/texmap/rcs/vesa.asm $
  13. ; $Revision: 1.1 $
  14. ; $Author: mike $
  15. ; $Date: 1993/09/08 17:29:56 $
  16. ;
  17. ; Routine to copy buffer to VESA memory.
  18. ;
  19. ; $Log: vesa.asm $
  20. ; Revision 1.1 1993/09/08 17:29:56 mike
  21. ; Initial revision
  22. ;
  23. ;
  24. ;
  25. .386
  26. INCLUDE VGAREGS.INC
  27. _DATA SEGMENT BYTE PUBLIC USE32 'DATA'
  28. BufferPtr dd ?
  29. BufferSeg dw ?
  30. GoalMode dw ?
  31. LastPage dd 0FFFFFFFFh
  32. ; Information from VESA return SuperVGA Information
  33. VESAVersion dw ?
  34. OEMStringPtr dd ?
  35. Capabilities dd ?
  36. VideoModePtr dd ?
  37. TotalMemory dw ?
  38. WinGranularity dw ?
  39. WinSize dw ?
  40. WinFuncPtr dd ?
  41. BytesPerScanLine dd ?
  42. PageSizeShift db ?
  43. VESA_Signature = 041534556h
  44. REALREGS STRUCT
  45. RealEDI dd ?
  46. RealESI dd ?
  47. RealEBP dd ?
  48. Reserved dd ?
  49. RealEBX dd ?
  50. RealEDX dd ?
  51. RealECX dd ?
  52. RealEAX dd ?
  53. RealFlags dw ?
  54. RealES dw ?
  55. RealDS dw ?
  56. RealFS dw ?
  57. RealGS dw ?
  58. RealIP dw ?
  59. RealCS dw ?
  60. RealSP dw ?
  61. RealSS dw ?
  62. REALREGS ENDS
  63. regs REALREGS < >
  64. _DATA ENDS
  65. DGROUP GROUP _DATA
  66. _TEXT SEGMENT BYTE PUBLIC USE32 'CODE'
  67. ASSUME DS:_DATA
  68. ASSUME CS:_TEXT
  69. EBXFarTo32:
  70. push ecx
  71. mov ecx, ebx
  72. and ecx, 0FFFF0000h
  73. shr ecx, 12
  74. and ebx, 0FFFFh
  75. add ebx, ecx
  76. pop ecx
  77. ret
  78. PUBLIC gr_vesa_setmode_
  79. gr_vesa_setmode_:
  80. push ebx
  81. push ecx
  82. push edx
  83. push edi
  84. mov GoalMode, ax
  85. ; Allocate a 256 byte block of DOS memory using DPMI
  86. mov ax, 0100h
  87. mov bx, 64 ; 64 paragraphs = 256 byte
  88. int 31h
  89. jc NoMemory
  90. ; AX = real mode segment of allocated block
  91. and eax, 0FFFFh
  92. mov BufferSeg, ax
  93. shl eax, 4 ; EAX = 32-bit pointer to DOS memory
  94. mov BufferPtr, eax
  95. ; Get SuperVGA information
  96. mov ax, BufferSeg
  97. mov regs.RealEDI, 0
  98. mov regs.RealESI, 0
  99. mov regs.RealEBP, 0
  100. mov regs.Reserved, 0
  101. mov regs.RealEBX, 0
  102. mov regs.RealEDX, 0
  103. mov regs.RealECX, 0
  104. mov regs.RealEAX, 04f00h
  105. mov regs.RealFlags, 0
  106. mov regs.RealES, ax
  107. mov regs.RealDS, 0
  108. mov regs.RealFS, 0
  109. mov regs.RealGS, 0
  110. mov regs.RealIP, 0
  111. mov regs.RealCS, 0
  112. mov regs.RealSP, 0
  113. mov regs.RealSS, 0
  114. mov bl, 10h
  115. xor bh, bh
  116. xor cx, cx
  117. mov edi, offset regs
  118. mov ax, 0300h
  119. int 31h
  120. mov eax, regs.RealEAX
  121. cmp ax, 04fh
  122. jne BadStatus
  123. ; Make sure there is a VESA signature
  124. mov eax, BufferPtr
  125. cmp dword ptr[eax+0], VESA_Signature
  126. jne NoVESADriver
  127. ; We now have a valid VESA driver loaded
  128. mov bx, word ptr [eax+4]
  129. mov VESAVersion, bx
  130. mov ebx, dword ptr [eax+6]
  131. call EBXFarTo32
  132. mov OEMStringPtr, ebx
  133. mov ebx, dword ptr [eax+10]
  134. mov Capabilities, ebx
  135. mov bx, word ptr [eax+18]
  136. mov TotalMemory, bx
  137. mov ebx, dword ptr [eax+14]
  138. call EBXFarTo32
  139. mov VideoModePtr, ebx
  140. TryAnotherMode:
  141. mov ax, word ptr [ebx]
  142. add ebx, 2
  143. cmp ax, GoalMode
  144. je ModeSupported
  145. cmp ax, -1
  146. je ModeNotSupported
  147. jmp TryAnotherMode
  148. ModeSupported:
  149. ; Get SuperVGA information
  150. mov ax, BufferSeg
  151. movzx ecx, GoalMode
  152. mov regs.RealEDI, 0
  153. mov regs.RealESI, 0
  154. mov regs.RealEBP, 0
  155. mov regs.Reserved, 0
  156. mov regs.RealEBX, 0
  157. mov regs.RealEDX, 0
  158. mov regs.RealECX, ecx
  159. mov regs.RealEAX, 04f01h
  160. mov regs.RealFlags, 0
  161. mov regs.RealES, ax
  162. mov regs.RealDS, 0
  163. mov regs.RealFS, 0
  164. mov regs.RealGS, 0
  165. mov regs.RealIP, 0
  166. mov regs.RealCS, 0
  167. mov regs.RealSP, 0
  168. mov regs.RealSS, 0
  169. mov bl, 10h
  170. xor bh, bh
  171. xor cx, cx
  172. mov edi, offset regs
  173. mov ax, 0300h
  174. int 31h
  175. mov eax, regs.RealEAX
  176. cmp ax, 04fh
  177. jne BadStatus
  178. ; Check if this mode supported by hardware.
  179. mov eax, BufferPtr
  180. mov bx, [eax]
  181. bt bx, 0
  182. jnc HardwareNotSupported
  183. mov bx, [eax+4]
  184. cmp bx, 64
  185. jne @f
  186. mov PageSizeShift, 0
  187. jmp GranularityOK
  188. @@: cmp bx, 32
  189. jne @f
  190. mov PageSizeShift, 1
  191. jmp GranularityOK
  192. @@: cmp bx, 16
  193. jne @f
  194. mov PageSizeShift, 2
  195. jmp GranularityOK
  196. @@: cmp bx, 8
  197. jne @f
  198. mov PageSizeShift, 3
  199. jmp GranularityOK
  200. @@: cmp bx, 4
  201. jne @f
  202. mov PageSizeShift, 4
  203. jmp GranularityOK
  204. @@: cmp bx, 2
  205. jne @f
  206. mov PageSizeShift, 5
  207. jmp GranularityOK
  208. @@: cmp bx, 1
  209. jne WrongGranularity
  210. mov PageSizeShift, 6
  211. GranularityOK:
  212. shl bx, 10
  213. mov WinGranularity, bx
  214. mov bx, [eax+6]
  215. mov WinSize, bx
  216. mov ebx, [eax+12]
  217. call EBXFarTo32
  218. mov WinFuncPtr, ebx
  219. mov bx, [eax+16]
  220. and ebx, 0ffffh
  221. mov BytesPerScanLine, ebx
  222. ; Set the mode!
  223. mov ax, 04f02h
  224. mov bx, GoalMode
  225. int 10h
  226. mov eax, 0
  227. jmp Done
  228. WrongLogicalWidth:
  229. mov eax, 1
  230. jmp Done
  231. WrongGranularity:
  232. mov eax, 2
  233. jmp Done
  234. HardwareNotSupported:
  235. mov eax, 3
  236. jmp Done
  237. ModeNotSupported:
  238. mov eax, 4
  239. jmp Done
  240. NoVESADriver:
  241. mov eax, 5
  242. jmp Done
  243. BadStatus:
  244. mov eax, 6
  245. jmp Done
  246. NoMemory:
  247. mov eax, 7
  248. Done:
  249. pop edi
  250. pop edx
  251. pop ecx
  252. pop ebx
  253. ret
  254. PUBLIC gr_vesa_setpage_
  255. gr_vesa_setpage_:
  256. ; EAX = 64K Page number
  257. cmp eax, LastPage
  258. jne @f
  259. ret
  260. @@: mov LastPage, eax
  261. push edx
  262. push ebx
  263. push ecx
  264. mov edx, eax
  265. mov cl, PageSizeShift
  266. shl edx, cl ; Convert from 64K pages to GranUnit pages.
  267. xor ebx, ebx ; BH=Select window, BL=Window A
  268. mov eax, 04f05h ; AX=Super VGA video memory window control
  269. int 10h
  270. pop ecx
  271. pop ebx
  272. pop edx
  273. ret
  274. PUBLIC gr_vesa_incpage_
  275. gr_vesa_incpage_:
  276. push eax
  277. push ebx
  278. push ecx
  279. push edx
  280. inc LastPage
  281. mov edx, LastPage
  282. mov cl, PageSizeShift
  283. shl edx, cl ; Convert from 64K pages to GranUnit pages.
  284. xor ebx, ebx ; BH=Select window, BL=Window A
  285. mov eax, 04f05h ; AX=Super VGA video memory window control
  286. int 10h
  287. pop edx
  288. pop ecx
  289. pop ebx
  290. pop eax
  291. ret
  292. PUBLIC gr_vesa_setstart_
  293. gr_vesa_setstart_:
  294. ; EAX = First column
  295. ; EDX = First row
  296. push ebx
  297. push ecx
  298. mov ecx, eax
  299. mov eax, 4f07h
  300. xor ebx, ebx
  301. int 10h
  302. pop ecx
  303. pop ebx
  304. ret
  305. PUBLIC gr_vesa_setlogical_
  306. gr_vesa_setlogical_:
  307. ; EAX = line width
  308. push ebx
  309. push ecx
  310. push edx
  311. mov cx, ax
  312. mov ax, 04f06h
  313. mov bl, 0
  314. int 10h
  315. and ebx, 0ffffh
  316. mov BytesPerScanLine, ebx
  317. mov ax, cx
  318. pop edx
  319. pop ecx
  320. pop ebx
  321. ret
  322. PUBLIC gr_vesa_pixel8_
  323. gr_vesa_pixel8_:
  324. ; EAX = x
  325. ; EDX = y
  326. ; EBX = 8-bit color
  327. imul edx, BytesPerScanLine
  328. add edx, eax ; EDX = y*bpr+x1
  329. mov eax, edx
  330. and edx, 00FFFFh
  331. shr eax, 16
  332. cmp eax, LastPage
  333. jne @f
  334. mov [edx+0A0000h], bl
  335. ret
  336. @@: mov LastPage, eax
  337. push edx
  338. push ecx
  339. push ebx
  340. mov edx, eax
  341. mov cl, PageSizeShift
  342. shl edx, cl ; Convert from 64K pages to GranUnit pages.
  343. xor ebx, ebx ; BH=Select window, BL=Window A
  344. mov eax, 04f05h ; AX=Super VGA video memory window control
  345. int 10h
  346. pop ebx
  347. pop ecx
  348. pop edx
  349. mov [edx+0A0000h], bl
  350. ret
  351. PUBLIC gr_vesa_pixel15_
  352. gr_vesa_pixel15_:
  353. ; EAX = x
  354. ; EDX = y
  355. ; EBX = 15-bit color
  356. imul edx, BytesPerScanLine
  357. shl eax, 1
  358. add edx, eax ; EDX = y*bpr+x1*2
  359. mov eax, edx
  360. and edx, 00FFFFh
  361. shr eax, 16
  362. cmp eax, LastPage
  363. jne @f
  364. mov [edx+0A0000h], bx
  365. ret
  366. @@: mov LastPage, eax
  367. push edx
  368. push ecx
  369. push ebx
  370. mov edx, eax
  371. mov cl, PageSizeShift
  372. shl edx, cl ; Convert from 64K pages to GranUnit pages.
  373. xor ebx, ebx ; BH=Select window, BL=Window A
  374. mov eax, 04f05h ; AX=Super VGA video memory window control
  375. int 10h
  376. pop ebx
  377. pop ecx
  378. pop edx
  379. mov [edx+0A0000h], bx
  380. ret
  381. PUBLIC gr_vesa_copy_canvas_
  382. gr_vesa_copy_canvas_:
  383. ; EAX = pointer to canvas
  384. push ebx
  385. push ecx
  386. push edx
  387. push edi
  388. push esi
  389. mov esi, eax
  390. ; This is code generated by BLOCK.BAS that moves a block of system
  391. ; memory to SVGA memory.
  392. ; This particular routine moves a block of size 300 x 200 x 2 bpp from
  393. ; ESI to ( 0 , 0 ) on the SVGA screen.
  394. MOV EBX, 0
  395. MOV EDX, 150
  396. MOV EAX, 0
  397. CALL gr_vesa_setpage_
  398. ; Draw line 0
  399. MOV EDI, 0A0000h
  400. MOV ECX, EDX
  401. REP MOVSD
  402. ; Draw line 1
  403. MOV EDI, 0A0500h
  404. MOV ECX, EDX
  405. REP MOVSD
  406. ; Draw line 2
  407. MOV EDI, 0A0A00h
  408. MOV ECX, EDX
  409. REP MOVSD
  410. ; Draw line 3
  411. MOV EDI, 0A0F00h
  412. MOV ECX, EDX
  413. REP MOVSD
  414. ; Draw line 4
  415. MOV EDI, 0A1400h
  416. MOV ECX, EDX
  417. REP MOVSD
  418. ; Draw line 5
  419. MOV EDI, 0A1900h
  420. MOV ECX, EDX
  421. REP MOVSD
  422. ; Draw line 6
  423. MOV EDI, 0A1E00h
  424. MOV ECX, EDX
  425. REP MOVSD
  426. ; Draw line 7
  427. MOV EDI, 0A2300h
  428. MOV ECX, EDX
  429. REP MOVSD
  430. ; Draw line 8
  431. MOV EDI, 0A2800h
  432. MOV ECX, EDX
  433. REP MOVSD
  434. ; Draw line 9
  435. MOV EDI, 0A2D00h
  436. MOV ECX, EDX
  437. REP MOVSD
  438. ; Draw line 10
  439. MOV EDI, 0A3200h
  440. MOV ECX, EDX
  441. REP MOVSD
  442. ; Draw line 11
  443. MOV EDI, 0A3700h
  444. MOV ECX, EDX
  445. REP MOVSD
  446. ; Draw line 12
  447. MOV EDI, 0A3C00h
  448. MOV ECX, EDX
  449. REP MOVSD
  450. ; Draw line 13
  451. MOV EDI, 0A4100h
  452. MOV ECX, EDX
  453. REP MOVSD
  454. ; Draw line 14
  455. MOV EDI, 0A4600h
  456. MOV ECX, EDX
  457. REP MOVSD
  458. ; Draw line 15
  459. MOV EDI, 0A4B00h
  460. MOV ECX, EDX
  461. REP MOVSD
  462. ; Draw line 16
  463. MOV EDI, 0A5000h
  464. MOV ECX, EDX
  465. REP MOVSD
  466. ; Draw line 17
  467. MOV EDI, 0A5500h
  468. MOV ECX, EDX
  469. REP MOVSD
  470. ; Draw line 18
  471. MOV EDI, 0A5A00h
  472. MOV ECX, EDX
  473. REP MOVSD
  474. ; Draw line 19
  475. MOV EDI, 0A5F00h
  476. MOV ECX, EDX
  477. REP MOVSD
  478. ; Draw line 20
  479. MOV EDI, 0A6400h
  480. MOV ECX, EDX
  481. REP MOVSD
  482. ; Draw line 21
  483. MOV EDI, 0A6900h
  484. MOV ECX, EDX
  485. REP MOVSD
  486. ; Draw line 22
  487. MOV EDI, 0A6E00h
  488. MOV ECX, EDX
  489. REP MOVSD
  490. ; Draw line 23
  491. MOV EDI, 0A7300h
  492. MOV ECX, EDX
  493. REP MOVSD
  494. ; Draw line 24
  495. MOV EDI, 0A7800h
  496. MOV ECX, EDX
  497. REP MOVSD
  498. ; Draw line 25
  499. MOV EDI, 0A7D00h
  500. MOV ECX, EDX
  501. REP MOVSD
  502. ; Draw line 26
  503. MOV EDI, 0A8200h
  504. MOV ECX, EDX
  505. REP MOVSD
  506. ; Draw line 27
  507. MOV EDI, 0A8700h
  508. MOV ECX, EDX
  509. REP MOVSD
  510. ; Draw line 28
  511. MOV EDI, 0A8C00h
  512. MOV ECX, EDX
  513. REP MOVSD
  514. ; Draw line 29
  515. MOV EDI, 0A9100h
  516. MOV ECX, EDX
  517. REP MOVSD
  518. ; Draw line 30
  519. MOV EDI, 0A9600h
  520. MOV ECX, EDX
  521. REP MOVSD
  522. ; Draw line 31
  523. MOV EDI, 0A9B00h
  524. MOV ECX, EDX
  525. REP MOVSD
  526. ; Draw line 32
  527. MOV EDI, 0AA000h
  528. MOV ECX, EDX
  529. REP MOVSD
  530. ; Draw line 33
  531. MOV EDI, 0AA500h
  532. MOV ECX, EDX
  533. REP MOVSD
  534. ; Draw line 34
  535. MOV EDI, 0AAA00h
  536. MOV ECX, EDX
  537. REP MOVSD
  538. ; Draw line 35
  539. MOV EDI, 0AAF00h
  540. MOV ECX, EDX
  541. REP MOVSD
  542. ; Draw line 36
  543. MOV EDI, 0AB400h
  544. MOV ECX, EDX
  545. REP MOVSD
  546. ; Draw line 37
  547. MOV EDI, 0AB900h
  548. MOV ECX, EDX
  549. REP MOVSD
  550. ; Draw line 38
  551. MOV EDI, 0ABE00h
  552. MOV ECX, EDX
  553. REP MOVSD
  554. ; Draw line 39
  555. MOV EDI, 0AC300h
  556. MOV ECX, EDX
  557. REP MOVSD
  558. ; Draw line 40
  559. MOV EDI, 0AC800h
  560. MOV ECX, EDX
  561. REP MOVSD
  562. ; Draw line 41
  563. MOV EDI, 0ACD00h
  564. MOV ECX, EDX
  565. REP MOVSD
  566. ; Draw line 42
  567. MOV EDI, 0AD200h
  568. MOV ECX, EDX
  569. REP MOVSD
  570. ; Draw line 43
  571. MOV EDI, 0AD700h
  572. MOV ECX, EDX
  573. REP MOVSD
  574. ; Draw line 44
  575. MOV EDI, 0ADC00h
  576. MOV ECX, EDX
  577. REP MOVSD
  578. ; Draw line 45
  579. MOV EDI, 0AE100h
  580. MOV ECX, EDX
  581. REP MOVSD
  582. ; Draw line 46
  583. MOV EDI, 0AE600h
  584. MOV ECX, EDX
  585. REP MOVSD
  586. ; Draw line 47
  587. MOV EDI, 0AEB00h
  588. MOV ECX, EDX
  589. REP MOVSD
  590. ; Draw line 48
  591. MOV EDI, 0AF000h
  592. MOV ECX, EDX
  593. REP MOVSD
  594. ; Draw line 49
  595. MOV EDI, 0AF500h
  596. MOV ECX, EDX
  597. REP MOVSD
  598. ; Draw line 50
  599. MOV EDI, 0AFA00h
  600. MOV ECX, EDX
  601. REP MOVSD
  602. ; Draw line 51
  603. MOV EDI, 0AFF00h
  604. MOV ECX, 64
  605. REP MOVSD
  606. CALL gr_vesa_incpage_
  607. ; Draw line 51
  608. MOV EDI, 0A0000h
  609. MOV ECX, 86
  610. REP MOVSD
  611. ; Draw line 52
  612. MOV EDI, 0A0400h
  613. MOV ECX, EDX
  614. REP MOVSD
  615. ; Draw line 53
  616. MOV EDI, 0A0900h
  617. MOV ECX, EDX
  618. REP MOVSD
  619. ; Draw line 54
  620. MOV EDI, 0A0E00h
  621. MOV ECX, EDX
  622. REP MOVSD
  623. ; Draw line 55
  624. MOV EDI, 0A1300h
  625. MOV ECX, EDX
  626. REP MOVSD
  627. ; Draw line 56
  628. MOV EDI, 0A1800h
  629. MOV ECX, EDX
  630. REP MOVSD
  631. ; Draw line 57
  632. MOV EDI, 0A1D00h
  633. MOV ECX, EDX
  634. REP MOVSD
  635. ; Draw line 58
  636. MOV EDI, 0A2200h
  637. MOV ECX, EDX
  638. REP MOVSD
  639. ; Draw line 59
  640. MOV EDI, 0A2700h
  641. MOV ECX, EDX
  642. REP MOVSD
  643. ; Draw line 60
  644. MOV EDI, 0A2C00h
  645. MOV ECX, EDX
  646. REP MOVSD
  647. ; Draw line 61
  648. MOV EDI, 0A3100h
  649. MOV ECX, EDX
  650. REP MOVSD
  651. ; Draw line 62
  652. MOV EDI, 0A3600h
  653. MOV ECX, EDX
  654. REP MOVSD
  655. ; Draw line 63
  656. MOV EDI, 0A3B00h
  657. MOV ECX, EDX
  658. REP MOVSD
  659. ; Draw line 64
  660. MOV EDI, 0A4000h
  661. MOV ECX, EDX
  662. REP MOVSD
  663. ; Draw line 65
  664. MOV EDI, 0A4500h
  665. MOV ECX, EDX
  666. REP MOVSD
  667. ; Draw line 66
  668. MOV EDI, 0A4A00h
  669. MOV ECX, EDX
  670. REP MOVSD
  671. ; Draw line 67
  672. MOV EDI, 0A4F00h
  673. MOV ECX, EDX
  674. REP MOVSD
  675. ; Draw line 68
  676. MOV EDI, 0A5400h
  677. MOV ECX, EDX
  678. REP MOVSD
  679. ; Draw line 69
  680. MOV EDI, 0A5900h
  681. MOV ECX, EDX
  682. REP MOVSD
  683. ; Draw line 70
  684. MOV EDI, 0A5E00h
  685. MOV ECX, EDX
  686. REP MOVSD
  687. ; Draw line 71
  688. MOV EDI, 0A6300h
  689. MOV ECX, EDX
  690. REP MOVSD
  691. ; Draw line 72
  692. MOV EDI, 0A6800h
  693. MOV ECX, EDX
  694. REP MOVSD
  695. ; Draw line 73
  696. MOV EDI, 0A6D00h
  697. MOV ECX, EDX
  698. REP MOVSD
  699. ; Draw line 74
  700. MOV EDI, 0A7200h
  701. MOV ECX, EDX
  702. REP MOVSD
  703. ; Draw line 75
  704. MOV EDI, 0A7700h
  705. MOV ECX, EDX
  706. REP MOVSD
  707. ; Draw line 76
  708. MOV EDI, 0A7C00h
  709. MOV ECX, EDX
  710. REP MOVSD
  711. ; Draw line 77
  712. MOV EDI, 0A8100h
  713. MOV ECX, EDX
  714. REP MOVSD
  715. ; Draw line 78
  716. MOV EDI, 0A8600h
  717. MOV ECX, EDX
  718. REP MOVSD
  719. ; Draw line 79
  720. MOV EDI, 0A8B00h
  721. MOV ECX, EDX
  722. REP MOVSD
  723. ; Draw line 80
  724. MOV EDI, 0A9000h
  725. MOV ECX, EDX
  726. REP MOVSD
  727. ; Draw line 81
  728. MOV EDI, 0A9500h
  729. MOV ECX, EDX
  730. REP MOVSD
  731. ; Draw line 82
  732. MOV EDI, 0A9A00h
  733. MOV ECX, EDX
  734. REP MOVSD
  735. ; Draw line 83
  736. MOV EDI, 0A9F00h
  737. MOV ECX, EDX
  738. REP MOVSD
  739. ; Draw line 84
  740. MOV EDI, 0AA400h
  741. MOV ECX, EDX
  742. REP MOVSD
  743. ; Draw line 85
  744. MOV EDI, 0AA900h
  745. MOV ECX, EDX
  746. REP MOVSD
  747. ; Draw line 86
  748. MOV EDI, 0AAE00h
  749. MOV ECX, EDX
  750. REP MOVSD
  751. ; Draw line 87
  752. MOV EDI, 0AB300h
  753. MOV ECX, EDX
  754. REP MOVSD
  755. ; Draw line 88
  756. MOV EDI, 0AB800h
  757. MOV ECX, EDX
  758. REP MOVSD
  759. ; Draw line 89
  760. MOV EDI, 0ABD00h
  761. MOV ECX, EDX
  762. REP MOVSD
  763. ; Draw line 90
  764. MOV EDI, 0AC200h
  765. MOV ECX, EDX
  766. REP MOVSD
  767. ; Draw line 91
  768. MOV EDI, 0AC700h
  769. MOV ECX, EDX
  770. REP MOVSD
  771. ; Draw line 92
  772. MOV EDI, 0ACC00h
  773. MOV ECX, EDX
  774. REP MOVSD
  775. ; Draw line 93
  776. MOV EDI, 0AD100h
  777. MOV ECX, EDX
  778. REP MOVSD
  779. ; Draw line 94
  780. MOV EDI, 0AD600h
  781. MOV ECX, EDX
  782. REP MOVSD
  783. ; Draw line 95
  784. MOV EDI, 0ADB00h
  785. MOV ECX, EDX
  786. REP MOVSD
  787. ; Draw line 96
  788. MOV EDI, 0AE000h
  789. MOV ECX, EDX
  790. REP MOVSD
  791. ; Draw line 97
  792. MOV EDI, 0AE500h
  793. MOV ECX, EDX
  794. REP MOVSD
  795. ; Draw line 98
  796. MOV EDI, 0AEA00h
  797. MOV ECX, EDX
  798. REP MOVSD
  799. ; Draw line 99
  800. MOV EDI, 0AEF00h
  801. MOV ECX, EDX
  802. REP MOVSD
  803. ; Draw line 100
  804. MOV EDI, 0AF400h
  805. MOV ECX, EDX
  806. REP MOVSD
  807. ; Draw line 101
  808. MOV EDI, 0AF900h
  809. MOV ECX, EDX
  810. REP MOVSD
  811. ; Draw line 102
  812. MOV EDI, 0AFE00h
  813. MOV ECX, 128
  814. REP MOVSD
  815. CALL gr_vesa_incpage_
  816. ; Draw line 102
  817. MOV EDI, 0A0000h
  818. MOV ECX, 22
  819. REP MOVSD
  820. ; Draw line 103
  821. MOV EDI, 0A0300h
  822. MOV ECX, EDX
  823. REP MOVSD
  824. ; Draw line 104
  825. MOV EDI, 0A0800h
  826. MOV ECX, EDX
  827. REP MOVSD
  828. ; Draw line 105
  829. MOV EDI, 0A0D00h
  830. MOV ECX, EDX
  831. REP MOVSD
  832. ; Draw line 106
  833. MOV EDI, 0A1200h
  834. MOV ECX, EDX
  835. REP MOVSD
  836. ; Draw line 107
  837. MOV EDI, 0A1700h
  838. MOV ECX, EDX
  839. REP MOVSD
  840. ; Draw line 108
  841. MOV EDI, 0A1C00h
  842. MOV ECX, EDX
  843. REP MOVSD
  844. ; Draw line 109
  845. MOV EDI, 0A2100h
  846. MOV ECX, EDX
  847. REP MOVSD
  848. ; Draw line 110
  849. MOV EDI, 0A2600h
  850. MOV ECX, EDX
  851. REP MOVSD
  852. ; Draw line 111
  853. MOV EDI, 0A2B00h
  854. MOV ECX, EDX
  855. REP MOVSD
  856. ; Draw line 112
  857. MOV EDI, 0A3000h
  858. MOV ECX, EDX
  859. REP MOVSD
  860. ; Draw line 113
  861. MOV EDI, 0A3500h
  862. MOV ECX, EDX
  863. REP MOVSD
  864. ; Draw line 114
  865. MOV EDI, 0A3A00h
  866. MOV ECX, EDX
  867. REP MOVSD
  868. ; Draw line 115
  869. MOV EDI, 0A3F00h
  870. MOV ECX, EDX
  871. REP MOVSD
  872. ; Draw line 116
  873. MOV EDI, 0A4400h
  874. MOV ECX, EDX
  875. REP MOVSD
  876. ; Draw line 117
  877. MOV EDI, 0A4900h
  878. MOV ECX, EDX
  879. REP MOVSD
  880. ; Draw line 118
  881. MOV EDI, 0A4E00h
  882. MOV ECX, EDX
  883. REP MOVSD
  884. ; Draw line 119
  885. MOV EDI, 0A5300h
  886. MOV ECX, EDX
  887. REP MOVSD
  888. ; Draw line 120
  889. MOV EDI, 0A5800h
  890. MOV ECX, EDX
  891. REP MOVSD
  892. ; Draw line 121
  893. MOV EDI, 0A5D00h
  894. MOV ECX, EDX
  895. REP MOVSD
  896. ; Draw line 122
  897. MOV EDI, 0A6200h
  898. MOV ECX, EDX
  899. REP MOVSD
  900. ; Draw line 123
  901. MOV EDI, 0A6700h
  902. MOV ECX, EDX
  903. REP MOVSD
  904. ; Draw line 124
  905. MOV EDI, 0A6C00h
  906. MOV ECX, EDX
  907. REP MOVSD
  908. ; Draw line 125
  909. MOV EDI, 0A7100h
  910. MOV ECX, EDX
  911. REP MOVSD
  912. ; Draw line 126
  913. MOV EDI, 0A7600h
  914. MOV ECX, EDX
  915. REP MOVSD
  916. ; Draw line 127
  917. MOV EDI, 0A7B00h
  918. MOV ECX, EDX
  919. REP MOVSD
  920. ; Draw line 128
  921. MOV EDI, 0A8000h
  922. MOV ECX, EDX
  923. REP MOVSD
  924. ; Draw line 129
  925. MOV EDI, 0A8500h
  926. MOV ECX, EDX
  927. REP MOVSD
  928. ; Draw line 130
  929. MOV EDI, 0A8A00h
  930. MOV ECX, EDX
  931. REP MOVSD
  932. ; Draw line 131
  933. MOV EDI, 0A8F00h
  934. MOV ECX, EDX
  935. REP MOVSD
  936. ; Draw line 132
  937. MOV EDI, 0A9400h
  938. MOV ECX, EDX
  939. REP MOVSD
  940. ; Draw line 133
  941. MOV EDI, 0A9900h
  942. MOV ECX, EDX
  943. REP MOVSD
  944. ; Draw line 134
  945. MOV EDI, 0A9E00h
  946. MOV ECX, EDX
  947. REP MOVSD
  948. ; Draw line 135
  949. MOV EDI, 0AA300h
  950. MOV ECX, EDX
  951. REP MOVSD
  952. ; Draw line 136
  953. MOV EDI, 0AA800h
  954. MOV ECX, EDX
  955. REP MOVSD
  956. ; Draw line 137
  957. MOV EDI, 0AAD00h
  958. MOV ECX, EDX
  959. REP MOVSD
  960. ; Draw line 138
  961. MOV EDI, 0AB200h
  962. MOV ECX, EDX
  963. REP MOVSD
  964. ; Draw line 139
  965. MOV EDI, 0AB700h
  966. MOV ECX, EDX
  967. REP MOVSD
  968. ; Draw line 140
  969. MOV EDI, 0ABC00h
  970. MOV ECX, EDX
  971. REP MOVSD
  972. ; Draw line 141
  973. MOV EDI, 0AC100h
  974. MOV ECX, EDX
  975. REP MOVSD
  976. ; Draw line 142
  977. MOV EDI, 0AC600h
  978. MOV ECX, EDX
  979. REP MOVSD
  980. ; Draw line 143
  981. MOV EDI, 0ACB00h
  982. MOV ECX, EDX
  983. REP MOVSD
  984. ; Draw line 144
  985. MOV EDI, 0AD000h
  986. MOV ECX, EDX
  987. REP MOVSD
  988. ; Draw line 145
  989. MOV EDI, 0AD500h
  990. MOV ECX, EDX
  991. REP MOVSD
  992. ; Draw line 146
  993. MOV EDI, 0ADA00h
  994. MOV ECX, EDX
  995. REP MOVSD
  996. ; Draw line 147
  997. MOV EDI, 0ADF00h
  998. MOV ECX, EDX
  999. REP MOVSD
  1000. ; Draw line 148
  1001. MOV EDI, 0AE400h
  1002. MOV ECX, EDX
  1003. REP MOVSD
  1004. ; Draw line 149
  1005. MOV EDI, 0AE900h
  1006. MOV ECX, EDX
  1007. REP MOVSD
  1008. ; Draw line 150
  1009. MOV EDI, 0AEE00h
  1010. MOV ECX, EDX
  1011. REP MOVSD
  1012. ; Draw line 151
  1013. MOV EDI, 0AF300h
  1014. MOV ECX, EDX
  1015. REP MOVSD
  1016. ; Draw line 152
  1017. MOV EDI, 0AF800h
  1018. MOV ECX, EDX
  1019. REP MOVSD
  1020. ; Draw line 153
  1021. MOV EDI, 0AFD00h
  1022. MOV ECX, EDX
  1023. REP MOVSD
  1024. CALL gr_vesa_incpage_
  1025. ; Draw line 154
  1026. MOV EDI, 0A0200h
  1027. MOV ECX, EDX
  1028. REP MOVSD
  1029. ; Draw line 155
  1030. MOV EDI, 0A0700h
  1031. MOV ECX, EDX
  1032. REP MOVSD
  1033. ; Draw line 156
  1034. MOV EDI, 0A0C00h
  1035. MOV ECX, EDX
  1036. REP MOVSD
  1037. ; Draw line 157
  1038. MOV EDI, 0A1100h
  1039. MOV ECX, EDX
  1040. REP MOVSD
  1041. ; Draw line 158
  1042. MOV EDI, 0A1600h
  1043. MOV ECX, EDX
  1044. REP MOVSD
  1045. ; Draw line 159
  1046. MOV EDI, 0A1B00h
  1047. MOV ECX, EDX
  1048. REP MOVSD
  1049. ; Draw line 160
  1050. MOV EDI, 0A2000h
  1051. MOV ECX, EDX
  1052. REP MOVSD
  1053. ; Draw line 161
  1054. MOV EDI, 0A2500h
  1055. MOV ECX, EDX
  1056. REP MOVSD
  1057. ; Draw line 162
  1058. MOV EDI, 0A2A00h
  1059. MOV ECX, EDX
  1060. REP MOVSD
  1061. ; Draw line 163
  1062. MOV EDI, 0A2F00h
  1063. MOV ECX, EDX
  1064. REP MOVSD
  1065. ; Draw line 164
  1066. MOV EDI, 0A3400h
  1067. MOV ECX, EDX
  1068. REP MOVSD
  1069. ; Draw line 165
  1070. MOV EDI, 0A3900h
  1071. MOV ECX, EDX
  1072. REP MOVSD
  1073. ; Draw line 166
  1074. MOV EDI, 0A3E00h
  1075. MOV ECX, EDX
  1076. REP MOVSD
  1077. ; Draw line 167
  1078. MOV EDI, 0A4300h
  1079. MOV ECX, EDX
  1080. REP MOVSD
  1081. ; Draw line 168
  1082. MOV EDI, 0A4800h
  1083. MOV ECX, EDX
  1084. REP MOVSD
  1085. ; Draw line 169
  1086. MOV EDI, 0A4D00h
  1087. MOV ECX, EDX
  1088. REP MOVSD
  1089. ; Draw line 170
  1090. MOV EDI, 0A5200h
  1091. MOV ECX, EDX
  1092. REP MOVSD
  1093. ; Draw line 171
  1094. MOV EDI, 0A5700h
  1095. MOV ECX, EDX
  1096. REP MOVSD
  1097. ; Draw line 172
  1098. MOV EDI, 0A5C00h
  1099. MOV ECX, EDX
  1100. REP MOVSD
  1101. ; Draw line 173
  1102. MOV EDI, 0A6100h
  1103. MOV ECX, EDX
  1104. REP MOVSD
  1105. ; Draw line 174
  1106. MOV EDI, 0A6600h
  1107. MOV ECX, EDX
  1108. REP MOVSD
  1109. ; Draw line 175
  1110. MOV EDI, 0A6B00h
  1111. MOV ECX, EDX
  1112. REP MOVSD
  1113. ; Draw line 176
  1114. MOV EDI, 0A7000h
  1115. MOV ECX, EDX
  1116. REP MOVSD
  1117. ; Draw line 177
  1118. MOV EDI, 0A7500h
  1119. MOV ECX, EDX
  1120. REP MOVSD
  1121. ; Draw line 178
  1122. MOV EDI, 0A7A00h
  1123. MOV ECX, EDX
  1124. REP MOVSD
  1125. ; Draw line 179
  1126. MOV EDI, 0A7F00h
  1127. MOV ECX, EDX
  1128. REP MOVSD
  1129. ; Draw line 180
  1130. MOV EDI, 0A8400h
  1131. MOV ECX, EDX
  1132. REP MOVSD
  1133. ; Draw line 181
  1134. MOV EDI, 0A8900h
  1135. MOV ECX, EDX
  1136. REP MOVSD
  1137. ; Draw line 182
  1138. MOV EDI, 0A8E00h
  1139. MOV ECX, EDX
  1140. REP MOVSD
  1141. ; Draw line 183
  1142. MOV EDI, 0A9300h
  1143. MOV ECX, EDX
  1144. REP MOVSD
  1145. ; Draw line 184
  1146. MOV EDI, 0A9800h
  1147. MOV ECX, EDX
  1148. REP MOVSD
  1149. ; Draw line 185
  1150. MOV EDI, 0A9D00h
  1151. MOV ECX, EDX
  1152. REP MOVSD
  1153. ; Draw line 186
  1154. MOV EDI, 0AA200h
  1155. MOV ECX, EDX
  1156. REP MOVSD
  1157. ; Draw line 187
  1158. MOV EDI, 0AA700h
  1159. MOV ECX, EDX
  1160. REP MOVSD
  1161. ; Draw line 188
  1162. MOV EDI, 0AAC00h
  1163. MOV ECX, EDX
  1164. REP MOVSD
  1165. ; Draw line 189
  1166. MOV EDI, 0AB100h
  1167. MOV ECX, EDX
  1168. REP MOVSD
  1169. ; Draw line 190
  1170. MOV EDI, 0AB600h
  1171. MOV ECX, EDX
  1172. REP MOVSD
  1173. ; Draw line 191
  1174. MOV EDI, 0ABB00h
  1175. MOV ECX, EDX
  1176. REP MOVSD
  1177. ; Draw line 192
  1178. MOV EDI, 0AC000h
  1179. MOV ECX, EDX
  1180. REP MOVSD
  1181. ; Draw line 193
  1182. MOV EDI, 0AC500h
  1183. MOV ECX, EDX
  1184. REP MOVSD
  1185. ; Draw line 194
  1186. MOV EDI, 0ACA00h
  1187. MOV ECX, EDX
  1188. REP MOVSD
  1189. ; Draw line 195
  1190. MOV EDI, 0ACF00h
  1191. MOV ECX, EDX
  1192. REP MOVSD
  1193. ; Draw line 196
  1194. MOV EDI, 0AD400h
  1195. MOV ECX, EDX
  1196. REP MOVSD
  1197. ; Draw line 197
  1198. MOV EDI, 0AD900h
  1199. MOV ECX, EDX
  1200. REP MOVSD
  1201. ; Draw line 198
  1202. MOV EDI, 0ADE00h
  1203. MOV ECX, EDX
  1204. REP MOVSD
  1205. ; Draw line 199
  1206. MOV EDI, 0AE300h
  1207. MOV ECX, EDX
  1208. REP MOVSD
  1209. pop esi
  1210. pop edi
  1211. pop edx
  1212. pop ecx
  1213. pop ebx
  1214. ret
  1215. _TEXT ENDS
  1216. END