免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bierdaci
打印 上一主题 下一主题

DOS下看真彩BMP位图的小程序(我给加了注释) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2004-03-08 16:22 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

呵呵,那时我编了一个类似DOS的EDIT ,不过是先看了别人的源码再去编的,那时我当时在DOS下编的最大的一个程序,好像是1000多行,不过我用C编的第一个程序是数学表达式的计算,支持加、减、乘、除、括号、等号还有正弦余弦运算,比如输入表达式运算2*(3+5)=然后回车就可以计算出结果,这是我当时学C时编的的第一个非常有成就的程序,为了这个程序我画了整整一大张的流程图,而且时间基本上都是花在画流程图上了,等到写程序的时候基本没有费多大劲,甚至连调试都很少,运行的还很成功,当时的成就感心里那个美啊,现在想起来还……说不出那个心情。那时编的小程序很多,后来学汇编的时候也编过不少小程序,可惜因为硬盘坏了东西全没了,要不我肯定会把我的那个数学表达式的程序给贴上来,虽然那个程序现在看来很幼稚很简单但因为那是我编的第一个程序而且那时没有看过任何程序的源码,所有思路全是自己想出来的,所以很想贴上来给你们看看.上面这个程序是在我学准备学LINUX之前编写的,因为那时实在不知道自己该学什么,在徘徊中时编了这么一个程序解闷,现在手里就这么一个程序了所以就把这个程序给贴了上来

论坛徽章:
0
12 [报告]
发表于 2004-03-09 07:48 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

呵呵,计数器的程序也是我在学的间断的一个重要的程序,当时好象写了近1200行,

论坛徽章:
0
13 [报告]
发表于 2004-03-09 16:04 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

计数器是个什么程序呀,用来计什么的?

论坛徽章:
0
14 [报告]
发表于 2004-03-09 22:59 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

我也写过这种程序。但是是显示16色的。
我不知楼是是如何上真采的。1024*768
我是用trubo c 2.0

http://linux.9812.net
上有我的程序。。
我主要是做DOS仿WIN GUI 还有鼠标事件。。。

还有。楼主用没用过UNIX下的图形库。
在UNIX控制台上也可以实现你上面的程序。注不用X
例如:控制台下的汉字系统。
就是用图形库,调用(点阵、失量)汉字库,然后在控制上以画线,画矩形,或画点(画点校率太低:)哈哈)

和UNDOS那东东都差不太多。。
主要是UNIX下要改内核,屏掉ctrl + c,ctrl +d .
因为这个键可退出shell中运行的任何程序。。。

论坛徽章:
0
15 [报告]
发表于 2004-03-09 23:14 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

[quote]原帖由 "mzpvsww"]呵呵,弓虽?我用c ,不过对汇编就垃圾的很[/quote 发表:


说到汇编,我一点不会。也没学过。
但我会用联合体调用中断。哈哈。
int 33, 主要是鼠标
int 10,显示
int 13,记得是磁盘吧。哈哈我就记得上时就debug写了一个清空FAT的东。
后来给我们全班第一份。。
一到我们上机。下机后一看,机器全完蛋哈哈。。

论坛徽章:
0
16 [报告]
发表于 2004-03-10 00:00 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

那些画点函数是我自己写的啦,TC或BC里不带真彩图形库的,不过我写的那个画点函数实在太慢,打开个大点的图片要老半天才能跑到顶,本来想实现滚屏的功能,可是这个速度连打开都要半天更别想滚屏了了。UNIX我没有接触,我只是在LINUX下编过内核程序,就是上面说的管道了,还没有涉及你说的那些啦呵呵

论坛徽章:
0
17 [报告]
发表于 2004-03-10 01:00 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

呵呵,看到搂主的代码,让我想起遥远的过去,贴个代码上来。
93-94年自己编写的图形库。当时用的是tasm,现在没什么用了。


  1. dosseg

  2. .model large
  3. viewporttype struc
  4.                  left        dw 0
  5.                  top        dw 0
  6.                  right        dw 0
  7.                  bottom        dw 0
  8.                  clip   dw 0
  9.                  ends
  10. fillsettingstype struc
  11.                 pattern dw 0
  12.                 fillcolor   dw 0
  13.                 ends

  14. .data
  15.         forline                dw  0
  16.         viewportsetting  viewporttype <0,0,639,479,0>;
  17.         fillsettings         fillsettingstype <0,0>;
  18.         mode                 db 0
  19.         addr                 dw 0
  20.         x0                  dw 0
  21.         y0                 dw 0
  22.         x1                 dw 0
  23.         y1                       dw 0
  24.         highh                 dw 0
  25.         wide                 dw 0
  26.         color                 db 1
  27.         bkcolor                 db 0
  28.         widebyte          dw 0
  29.         firstp                  dw 0
  30.         crease                  dw 0
  31.         savewritemode         db 0
  32.         buf                         db  48 dup(0)


  33.         hzk        db    'c:\service\char.dot'
  34.                 db    0
  35.         ascildot         db         1536d dup (0)
  36.                                  db  64d dup (255d)    ;定义为96号字符,作覆盖用
  37.         openerror        db    'char.dot open error!',0dh,0ah,'$'
  38.         readerror        db    'char.dot read error!',0dh,0ah,'$'
  39.         closeerror        db    'char.dot close error!',0dh,0ah,'$'

  40.         randsi        dw        0
  41.         int_1c_seg        dw        0
  42.         int_1c_off        dw        0

  43.         old_8_bit                db        0
  44.         old_5_bit                db        0


  45.         maxtime                        dw        10d          ;minute*1200
  46.         currtime                dw        0
  47.         rule                        dw        0

  48.         timer        db        0
  49.         clocker db 0
  50.         timeon                db        0
  51.         offhour        db        0
  52.         offminute        db        0
  53.         offsecond        db        0
  54.         timex        dw        0
  55.         timey        dw        0
  56.         timecol        dw        0
  57.         timebkcol        dw        0

  58.         clockon        db        0
  59.         abshour        db        0
  60.         absminute        db        0
  61.         abssecond        db        0
  62.         clockx        dw        0
  63.         clocky        dw        0
  64.         clockcol        dw        0
  65.         clockbkcol        dw        0


  66. .code
  67.         public  @closegraph$qv
  68.         public        @initgraph$qv
  69.         public  @putpixel$qiii
  70.         public        @line$qiiii
  71.         public        @setcolor$qi
  72.         public        @getcolor$qv
  73.         public        @setwritemode$qi
  74.         public        @getwritemode$qv
  75.         public        @setviewport$qiiiii
  76.         public        @getviewsettings$qn12viewporttype
  77.         public        @restoreview$qn12viewporttype
  78. ;        public        @writergb$qiiii
  79.         public        @bar$qiiii
  80. ;        public        @setfillstyle$qii
  81.         public  @rectangle$qiiii
  82.         public  @clearviewport$qv
  83.         public  @cleardevice$qv
  84.         public         @writehz16$qiiinuc
  85.         public         @writeascil$qiiii
  86.         public         @loadascil$qv

  87.         public         @settimeon$qiiii
  88.         public         @settimeoff$qv
  89.         public  @setclockon$qiiii
  90.         public  @setclockoff$qv

  91.         public @installclock$qv
  92.         public _installclock
  93.         public @setmaxtime$qi
  94.         public _setmaxtime
  95.         public @resetclock$qv
  96.         public _resetclock
  97.         public @quitclock$qv
  98.         public _quitclock
  99.         public @timeout$qv
  100.         public _timeout
  101.         public @M_gettime$qnuc
  102.         public _M_gettime
  103.         public @M_random$qi
  104.         public _M_random


  105.         public        _initgraph
  106.         public  _restoreview
  107.         public        _closegraph
  108.         public        _setwritemode
  109.         public        _putpixel
  110.         public        _rectangle
  111.         public  _bar
  112.         public        _line
  113.         public        _setcolor
  114.         public        _getcolor
  115.         public        _setviewport
  116.         public        _getviewsettings
  117.         public        _getmaxx
  118.         public        _getmaxy
  119.         public        _setfillstyle
  120.         public  _getfillsettings
  121.         public        _cleardevice
  122.         public        _clearviewport
  123.         public  _setbkcolor
  124.         public        _getbkcolor
  125.         public        _drawpoly
  126.         public        _setlinestyle
  127.         public        _floodfill
  128.         public        _getwritemode
  129.         public  _writehz16
  130.         public         _writeascil
  131.         public         _loadascil

  132.         public         _settimeon
  133.         public         _settimeoff
  134.         public         _setclockon
  135.         public         _setclockoff


  136. pushds                   macro
  137.         push        ds
  138.         mov        ax,@DATA
  139.         mov        ds,ax
  140.         endm

  141. setmode0        macro

  142.         mov        dx,03c4h
  143.         mov        al,2
  144.         out        dx,al
  145.         inc        dx
  146.         mov        al,0fh
  147.         out        dx,al

  148.         mov        dx,03ceh
  149.         mov        al,3
  150.         out        dx,al
  151.         inc        dx
  152.         mov        al,0
  153.         out        dx,al
  154.         dec        dx
  155.         endm

  156. restoremode        macro
  157.         mov        dx,03ceh
  158.         mov        al,3
  159.         out        dx,al
  160.         inc        dx
  161.         mov        al,[mode]
  162.         out        dx,al
  163.         dec        dx
  164.         endm

  165. selreg                macro num
  166.         mov        al,num
  167.         out        dx,al
  168.         inc        dx
  169.         endm

  170. movreg                macro num
  171.         mov        al,num
  172.         out        dx,al
  173.         dec        dx
  174.         endm


  175. @setbkcolor$qi label far
  176. _setbkcolor        proc    far
  177.         push        bp
  178.         mov        bp,sp
  179.         push        es
  180.         pushds
  181.         push        si
  182.         push        di

  183.         mov        ax,0a000h
  184.         mov        es,ax

  185.         setmode0

  186.         selreg        5
  187.         in        al,dx
  188.         and        al,252d
  189.         or        al,8
  190.         out        dx,al
  191.         dec        dx

  192.         selreg        2
  193.         movreg  [bkcolor]
  194.         mov        ax,[bp+6]
  195.         mov        [bkcolor],al
  196.         selreg        0
  197.         movreg        [bkcolor]
  198.         selreg        1
  199.         movreg        0fh
  200.         xor        bx,bx
  201.         mov        di,bx

  202.         mov        cx,38400d
  203.         selreg        8

  204. sblb:
  205.         mov        al,es:[di]
  206.         cmp        al,ah
  207.         jz        ll
  208.         mov        ah,al
  209.         out        dx,al
  210. ll:
  211.         stosb
  212.         loop        sblb

  213.         restoremode
  214.         selreg        1
  215.         movreg        00h
  216.         selreg        8
  217.         movreg  0ffh
  218.         selreg        5
  219.         in        al,dx
  220.         and        al,247d
  221.         out        dx,al

  222.         pop        di
  223.         pop        si
  224.         pop        ds
  225.         pop        es
  226.         mov        sp,bp
  227.         pop        bp
  228.         ret
  229. _setbkcolor        endp


  230. @line$qiiii label far
  231. _line        proc    far

  232.         cli
  233.         push        bp
  234.         mov        bp,sp
  235.         push        es
  236.         pushds
  237.         push        si
  238.         push        di

  239.         mov        ax,0a000h
  240.         mov        es,ax

  241.         mov        bx,[bp+6]      ;x0
  242.         mov     cx,[bp+10]     ;x1
  243.         mov        dx,[bp+12]     ;y1
  244.         mov        ax,[bp+8]      ;y0
  245.         push        ax
  246.         mov        ax,cx
  247.         and        ax,8000h
  248.         jz        ll01
  249.         xor        cx,cx
  250. ll01:
  251.         mov        ax,bx
  252.         and        ax,8000h
  253.         jz     ll02
  254.         xor        bx,bx
  255. ll02:
  256.         pop        ax
  257.         push        bx

  258.         mov        bx,ax
  259.         and        bx,8000h
  260.         jz        ll03
  261.         xor        ax,ax
  262. ll03:
  263.         mov        bx,dx
  264.         and        bx,8000h
  265.         jz      ll04
  266.         xor        dx,dx
  267. ll04:
  268.         pop        bx

  269.         add        ax,viewportsetting.top
  270.         add        bx,viewportsetting.left
  271.         add        cx,viewportsetting.left
  272.         add        dx,viewportsetting.top

  273.         mov        [x0],bx
  274.         mov        [y0],ax
  275.         mov        [x1],cx
  276.         mov        [y1],dx
  277.         cmp        bx,cx
  278.         jbe        lb0
  279.         mov        [x0],cx
  280.         mov        [x1],bx
  281.         mov        [y0],dx
  282.         mov        [y1],ax
  283. lb0:

  284.         mov        ax,[x0]
  285.         cmp        ax,viewportsetting.right
  286.         jnbe        llexit
  287.         cmp        ax,viewportsetting.left
  288.         jnbe        ll1
  289.         mov        ax,viewportsetting.left
  290.         mov        [x0],ax
  291. ll1:
  292.         mov        ax,[x1]
  293.         cmp        ax,viewportsetting.right
  294.         jbe        ll2
  295.         mov        ax,viewportsetting.right
  296.         mov        [x1],ax
  297. ll2:

  298.         mov        ax,[y0]
  299.         mov        bx,[y1]
  300.         cmp        ax,bx
  301.         jbe        ll3

  302.         cmp        bx,viewportsetting.bottom
  303.         jnbe        llexit
  304.         cmp        bx,viewportsetting.top
  305.         jnbe        ll4
  306.         mov        bx,viewportsetting.top
  307.         mov        [y1],bx
  308. ll4:
  309.         cmp        ax,viewportsetting.bottom
  310.         jbe        ll5
  311.         mov        ax,viewportsetting.bottom
  312.         mov        [y0],bx
  313. ll5:
  314.         jmp        ll7

  315. ll3:
  316.         cmp        ax,viewportsetting.bottom
  317.         jnbe        llexit
  318.         cmp        ax,viewportsetting.top
  319.         jnbe        ll6
  320.         mov        ax,viewportsetting.top
  321.         mov        [y0],ax
  322. ll6:
  323.         cmp        bx,viewportsetting.bottom
  324.         jbe        ll7
  325.         mov        bx,viewportsetting.bottom
  326.         mov        [y1],bx
  327.         jmp        ll7
  328. llexit:

  329.         pop        di
  330.         pop        si
  331.         pop        ds
  332.         pop        es
  333.         mov        sp,bp
  334.         pop        bp
  335.         ret
  336. ll7:

  337.         mov        cx,[x1]
  338.         mov        bx,[x0]
  339.         sub        cx,bx
  340.         mov        [wide],cx

  341.         mov        dx,[y1]
  342.         mov        ax,[y0]

  343.         cmp        dx,ax
  344.         jb        lb11
  345.         sub     dx,ax
  346.         mov        [highh],dx
  347.         mov        ax,80d
  348.         mov        [crease],ax
  349.         jmp        lb10
  350. lb11:
  351.         sub        ax,dx
  352.         mov        [highh],ax
  353.         mov        ax,-80d
  354.         mov        [crease],ax
  355. lb10:

  356.         mov        ax,[y0]    ;y0
  357.         mov        bx,[x0]      ;x0
  358.         call        _getaddr

  359.         mov        dx,3ceh
  360.         selreg        5
  361.         movreg        2
  362.         selreg        8
  363.         movreg        cl

  364.         mov        cx,[wide]
  365.         cmp        cx,[highh]
  366.         jb        lb101

  367.         mov        cx,[wide]
  368.         mov        dx,0
  369.         cmp        cx,0
  370.         jbe        linelb21
  371.         mov        ah,[color]
  372. linelb2:
  373.         add        dx,[highh]
  374.         shr        al,1
  375.         cmp        al,0
  376.         jne        l12
  377.         mov        al,128d
  378.         inc        bx

  379. l12:
  380.         push        dx
  381.         mov        dx,3cfh
  382.         out        dx,al
  383.         pop        dx
  384.         cmp        dx,[wide]
  385.         jb        l11
  386.         sub        dx,[wide]
  387.         add        bx,[crease]
  388. l11:
  389.         push        ax
  390.         mov        ah,es:[bx]
  391.         pop        ax
  392.         mov        es:[bx],ah
  393.         loop    linelb2
  394. linelb21:
  395.         jmp        lineexit

  396. lb101:
  397.         mov        cx,highh
  398.         mov        dx,0
  399.         mov        ah,[color]
  400. linelb3:
  401.         add        dx,[wide]
  402.         add        bx,[crease]

  403.         cmp        dx,[highh]
  404.         jb        l21
  405.         sub        dx,[highh]
  406.         shr        al,1
  407.         cmp        al,0
  408.         jne        l22
  409.         mov        al,128d
  410.         inc        bx
  411. l22:
  412.         push        dx
  413.         mov        dx,3cfh
  414.         out        dx,al
  415.         pop        dx
  416. l21:
  417.         push        ax
  418.         mov        ah,es:[bx]
  419.         pop        ax
  420.         mov        es:[bx],ah
  421.         loop    linelb3
  422. lineexit:

  423.         mov        dx,3ceh
  424.         selreg        5
  425.         movreg        0
  426.         selreg        8
  427.         movreg        0ffh

  428.         pop        di
  429.         pop        si
  430.         pop        ds
  431.         pop        es
  432.         mov        sp,bp
  433.         pop        bp
  434.         sti
  435.         ret
  436. _line        endp


  437. @rectangle$qiiii label far
  438. _rectangle        proc    far
  439.         push        bp
  440.         mov        bp,sp
  441.         push        es
  442.         pushds
  443.         push        si
  444.         push        di

  445.         mov        ax,0a000h
  446.         mov        es,ax
  447.         mov        ax,[bp+8]      ;y0
  448.         mov        bx,[bp+6]      ;x0
  449.         mov     cx,[bp+10]     ;x1
  450.         mov        dx,[bp+12]     ;y1
  451.         add        ax,viewportsetting.top
  452.         add        bx,viewportsetting.left
  453.         add        cx,viewportsetting.left
  454.         add        dx,viewportsetting.top

  455.         push        ax
  456.         cmp        bx,cx
  457.         jbe     r1b1
  458.         mov        ax,cx
  459.         mov        cx,bx
  460.         mov        bx,ax
  461. r1b1:
  462.         pop        ax
  463.         push        bx
  464.         cmp     ax,dx
  465.         jbe        r1b2
  466.         mov        bx,dx
  467.         mov        dx,ax
  468.         mov        ax,bx
  469. r1b2:
  470.         pop        bx

  471.         cmp        ax,viewportsetting.bottom
  472.         jnbe        rectexit
  473.         cmp        dx,viewportsetting.bottom
  474.         jbe        r1b01
  475.         mov        dx,viewportsetting.bottom
  476. r1b01:
  477.         cmp        bx,viewportsetting.right
  478.         jnbe        rectexit
  479.         cmp        cx,viewportsetting.right
  480.         jbe        r1b02
  481.         mov        cx,viewportsetting.right

  482.         jmp        r1b02
  483. rectexit:
  484.         pop        di
  485.         pop        si
  486.         pop        ds
  487.         pop        es
  488.         mov        sp,bp
  489.         pop        bp
  490.         ret
  491. r1b02:
  492.         mov        [x0],bx
  493.         mov        [x1],cx
  494.         mov        [y1],dx
  495.         mov        [y0],ax

  496.         sub     dx,ax
  497.         inc        dx
  498.         mov        [highh],dx

  499.         shr        bx,1
  500.         shr        bx,1
  501.         shr        bx,1
  502.         inc        bx
  503.         shr        cx,1
  504.         shr        cx,1
  505.         shr        cx,1

  506.         xor        ax,ax
  507.         mov        [widebyte],ax
  508.         cmp        cx,bx
  509.         jb      lb001
  510.         sub        cx,bx
  511.         mov        [widebyte],cx
  512. lb001:
  513.         mov        dx,03ceh
  514.         selreg        5
  515.         movreg        2

  516.         mov        ax,[y0]      ;y0
  517.         mov        bx,[x0]      ;x0
  518.         call        _getaddr

  519.         mov        dx,03ceh
  520.         selreg        8
  521.         movreg        cl

  522.         mov        cx,[highh]
  523.         dec        cx
  524.         mov        al,[color]
  525.         cmp        cx,1
  526.         jbe        lb111
  527.         dec        cx
  528. lb1:
  529.         add        bx,80d
  530.         mov        ah,es:[bx]
  531.         mov        es:[bx],al
  532.         loop    lb1
  533. lb111:

  534.         mov        ax,[y0]      ;y0
  535.         mov        bx,[x1]      ;x1
  536.         call        _getaddr
  537.         mov        dx,03ceh
  538.         selreg        8
  539.         movreg        cl
  540.         mov        cx,[highh]
  541.         mov        al,[color]
  542.         dec        cx
  543.         cmp        cx,1
  544.         jbe        lb21
  545.         dec        cx
  546. lb2:
  547.         add        bx,80d
  548.         mov        ah,es:[bx]
  549.         mov        es:[bx],al
  550.         loop    lb2
  551. lb21:

  552.         mov        ax,[x0]
  553.         mov        bx,[x1]
  554.         shr        ax,1
  555.         shr        ax,1
  556.         shr        ax,1
  557.         inc        ax
  558.         shl        ax,1
  559.         shl        ax,1
  560.         shl        ax,1
  561.         cmp        ax,bx
  562.         jbe     lb201


  563.         mov        ax,[y0]
  564.         mov        bx,[x1]
  565.         call        _getbit
  566.         not        cx
  567.         push        cx
  568.         mov        ax,[y0]
  569.         mov        bx,[x1]
  570.         call        _getaddr
  571.         pop        dx
  572.         or        dx,cx
  573.         push        dx
  574.         mov        ax,[y0]
  575.         mov        bx,[x0]
  576.         call        _getbit
  577.         pop        dx
  578.         and        dx,cx
  579.         mov        cl,dl
  580.         mov        dx,3ceh
  581.         selreg        8
  582.         movreg        cl
  583.         mov        al,[color]
  584.         mov        ah,es:[bx]
  585.         mov        es:[bx],al

  586.         mov        ax,[y1]
  587.         mov        bx,[x0]
  588.         call        _getbit
  589.         mov        al,[color]
  590.         mov        ah,es:[bx]
  591.         mov        es:[bx],al
  592.         jmp        rbexit

  593. lb201:
  594.         mov        ax,[y0]      ;y0
  595.         mov        bx,[x0]      ;x0
  596.         call        _getbit

  597.         mov        dx,3ceh
  598.         selreg        8
  599.         movreg        cl
  600.         mov        al,[color]
  601.         mov        ah,es:[bx]
  602.         mov        es:[bx],al
  603.         inc        bx

  604.         mov        dx,3ceh
  605.         selreg        8
  606.         movreg        0ffh
  607.         mov        cx,[widebyte]
  608.         mov        al,[color]
  609.         cmp        cx,0
  610.         jbe        lb41
  611. lb4:
  612.         mov        ah,es:[bx]
  613.         mov        es:[bx],al
  614.         inc        bx
  615.         loop        lb4

  616. lb41:

  617.         mov        ax,[y1]      ;y1
  618.         mov        bx,[x0]      ;x0
  619.         call        _getbit
  620.         mov        dx,3ceh
  621.         selreg        8
  622.         movreg        cl
  623.         mov        al,[color]
  624.         mov        ah,es:[bx]
  625.         mov        es:[bx],al
  626.         inc        bx
  627.         mov        dx,03ceh
  628.         selreg        8
  629.         movreg        0ffh
  630.         mov        cx,[widebyte]
  631.         cmp        cx,0
  632.         jbe        lb51
  633. lb5:
  634.         mov        al,[color]
  635.         mov        ah,es:[bx]
  636.         mov        es:[bx],al
  637.         inc        bx
  638.         loop        lb5
  639. lb51:
  640.         mov        ax,[y0]      ;y0
  641.         mov        bx,[x1]      ;x1
  642.         call        _getbit
  643.         not        cl
  644.         mov        dx,3ceh
  645.         selreg        8
  646.         movreg        cl
  647.         mov        al,[color]
  648.         mov        ah,es:[bx]
  649.         mov        es:[bx],al

  650.         mov        ax,[y1]      ;y1
  651.         mov        bx,[x1]      ;x1
  652.         call        _getbit
  653.         cmp        cl,0
  654.         je      lb52
  655.         not        cl
  656. lb52:
  657.         mov        dx,03ceh
  658.         selreg        8
  659.         movreg        cl
  660.         mov        al,[color]
  661.         mov        ah,es:[bx]
  662.         mov        es:[bx],al
  663. rbexit:
  664.         mov        dx,03ceh
  665.         selreg        5
  666.         movreg        0
  667.         selreg        8
  668.         movreg        0ffh

  669.         pop        di
  670.         pop        si
  671.         pop        ds
  672.         pop        es
  673.         mov        sp,bp
  674.         pop        bp
  675.         ret
  676. _rectangle        endp



  677. _drawpoly        proc    far
  678.         push        bp
  679.         mov        bp,sp
  680.         push        es
  681.         pushds

  682.         mov        ax,[bp+6]
  683.         dec        ax
  684.         mov        [forline],ax      ;num of point
  685.         inc        ax
  686.         mov        bx,[bp+8]
  687.         mov        cl,2
  688.         mul        cl
  689.         mul        cl
  690.         dec        ax

  691. ;        push        ss:[bx+3]
  692. ;        push        ss:[bx+1]

  693.         add        bx,ax
  694.         dec        bx
  695.         mov        [addr],bx
  696.         mov        cx,[forline]
  697. ;        push        ss:[bx]
  698. ;        push        ss:[bx-2]
  699. ;        call        _line


  700.         mov        [widebyte],bx
  701. dlb:
  702.         mov        ax,ss:[bx]
  703.         push        ax
  704.         mov        ax,ss:[bx-2]
  705.         push        ax
  706.         mov        ax,ss:[bx-4]
  707.         push        ax
  708.         mov        ax,ss:[bx-6]
  709.         push        ax
  710.         sub        bx,4
  711.         mov        ss:[addr],bx
  712.         call        _line
  713.         mov        bx,ss:[addr]
  714.         mov        cx,[forline]
  715.         dec        cx
  716.         mov        [forline],cx
  717.         cmp        cx,0
  718.         jnz        dlb

  719.         add        bx,4
  720.         mov        ax,ss:[bx-4]
  721.         push        ax
  722.         mov        ax,ss:[bx-6]
  723.         push        ax
  724.         mov        bx,widebyte
  725.         mov        ax,ss:[bx]
  726.         push        ax
  727.         mov        ax,ss:[bx-2]
  728.         push        ax
  729.         call         _line

  730.         pop        ds
  731.         pop        es
  732.         mov        sp,bp
  733.         pop        bp
  734.         ret
  735. _drawpoly        endp

  736. @bar$qiiii label far
  737. _bar        proc    far
  738.         sti
  739.         push        bp
  740.         mov        bp,sp
  741.         push        es
  742.         pushds
  743.         push        si
  744.         push        di

  745.         mov        ax,0a000h
  746.         mov        es,ax
  747.         mov        ax,[bp+8]      ;y0
  748.         mov        bx,[bp+6]      ;x0
  749.         mov     cx,[bp+10]     ;x1
  750.         mov        dx,[bp+12]     ;y1

  751.         add        ax,viewportsetting.top
  752.         add        bx,viewportsetting.left
  753.         add        cx,viewportsetting.left
  754.         add        dx,viewportsetting.top

  755.         push        ax
  756.         cmp        bx,cx
  757.         jbe     blrb1
  758.         mov        ax,cx
  759.         mov        cx,bx
  760.         mov        bx,ax
  761. blrb1:
  762.         pop        ax
  763.         push        bx
  764.         cmp     ax,dx
  765.         jbe        blrb2
  766.         mov        bx,dx
  767.         mov        dx,ax
  768.         mov        ax,bx
  769. blrb2:
  770.         pop        bx
  771.         cmp        ax,viewportsetting.bottom
  772.         jnbe        barexit1
  773.         cmp        dx,viewportsetting.bottom
  774.         jbe        blb01
  775.         mov        dx,viewportsetting.bottom
  776. blb01:
  777.         cmp        bx,viewportsetting.right
  778.         jnbe        barexit1
  779.         cmp        cx,viewportsetting.right
  780.         jbe        blb02
  781.         mov        cx,viewportsetting.right
  782.         jmp        blb02
  783. barexit1:
  784.         pop        di
  785.         pop        si
  786.         pop        ds
  787.         pop        es
  788.         mov        sp,bp
  789.         pop        bp
  790.         cli
  791.         ret
  792. blb02:
  793.         mov        [x0],bx
  794.         mov        [x1],cx
  795.         mov        [y1],dx
  796.         mov        [y0],ax

  797.         sub     dx,ax
  798.         inc        dx
  799.         mov        [highh],dx

  800.         shr        bx,1
  801.         shr        bx,1
  802.         shr        bx,1
  803.         inc        bx
  804.         shr        cx,1
  805.         shr        cx,1
  806.         shr        cx,1
  807.         xor        ax,ax
  808.         mov        [widebyte],ax
  809.         cmp        cx,bx
  810.         jb      lbb001
  811.         sub        cx,bx
  812.         mov        [widebyte],cx
  813. lbb001:
  814.         setmode0
  815.         mov        dx,3ceh
  816.         selreg        5
  817.         movreg        2
  818.         mov        ax,[x0]
  819.         mov        bx,[x1]
  820.         shr        ax,1
  821.         shr        ax,1
  822.         shr        ax,1
  823.         inc        ax
  824.         shl        ax,1
  825.         shl        ax,1
  826.         shl        ax,1
  827.         cmp        ax,bx
  828.         jbe     barlb201

  829.         mov        ax,ax
  830.         mov        ax,[y0]
  831.         mov        bx,[x1]
  832.         call        _getbit
  833.         not        cx

  834.         push        cx
  835.         mov        ax,[y0]
  836.         mov        bx,[x1]
  837.         call        _getaddr
  838.         pop        dx
  839.         or        cx,dx

  840.         push        cx
  841.         mov        ax,[y0]
  842.         mov        bx,[x0]
  843.         call        _getbit
  844.         pop        dx
  845.         and        dx,cx
  846.         mov        cl,dl
  847.         mov        dx,3ceh
  848.         selreg        8
  849.         movreg        cl
  850.         mov        cx,[highh]
  851.         mov        ax,fillsettings.fillcolor
  852. barb3:
  853.         mov        ah,es:[bx]
  854.         mov        es:[bx],al
  855.         add        bx,80
  856.         loop        barb3
  857.         jmp        barexit

  858. barlb201:

  859.         mov        ax,[y0]      ;y0
  860.         mov        bx,[x0]      ;x0
  861.         call        _getbit
  862.         mov        dx,3ceh
  863.         selreg        8
  864.         movreg        cl
  865.         mov        ax,fillsettings.fillcolor
  866.         mov        cx,[highh]
  867.         mov        [firstp],bx
  868. barlb3:
  869.         mov        ah,es:[bx]
  870.         mov        es:[bx],al
  871.         add        bx,80
  872.         loop        barlb3

  873.         mov        cx,[widebyte]
  874.         cmp        cx,0
  875.         je        barlb52

  876.         selreg        8
  877.         movreg        0ffh
  878.         mov        dx,[firstp]
  879.         inc        dx
  880.         mov        ax,fillsettings.fillcolor
  881.         mov        cx,[highh]
  882. barlb41:
  883.         push        cx
  884.         mov        bx,dx
  885.         mov        cx,[widebyte]
  886. barlb5:
  887.         mov        es:[bx],al
  888.         inc        bx
  889.         loop        barlb5
  890.         pop        cx
  891.         add        dx,80
  892.         loop        barlb41

  893. barlb52:
  894.         mov        ax,[y0]      ;y0
  895.         mov        bx,[x1]      ;x1
  896.         call        _getbit
  897.         not        cl
  898.         push        cx
  899.         mov        ax,[y0]      ;y0
  900.         mov        bx,[x1]      ;x1
  901.         call        _getaddr
  902.         pop        dx
  903.         or        cl,dl

  904.         mov        dx,3ceh
  905.         selreg        8
  906.         movreg        cl
  907.         mov        ax,[fillsettings.fillcolor]
  908.         mov        ah,es:[bx]
  909.         mov        es:[bx],al
  910.         mov        cx,[highh]
  911. barlb6:
  912.         mov        ah,es:[bx]
  913.         mov        es:[bx],al
  914.         add        bx,80
  915.         loop        barlb6


  916. barexit:
  917.         restoremode
  918.         selreg        5
  919.         movreg        0
  920.         selreg        8
  921.         movreg        0ffh

  922.         pop        di
  923.         pop        si
  924.         pop        ds
  925.         pop        es
  926.         mov        sp,bp
  927.         pop        bp
  928.         cli
  929.         ret
  930. _bar        endp

  931. @cleardevice$qv label far
  932. _cleardevice        proc    far
  933.         sti
  934.         push        bp
  935.         mov        bp,sp
  936.         push        es
  937.         pushds
  938.         push        si
  939.         push        di
  940.         mov        ax,0a000h
  941.         mov        es,ax

  942.         setmode0
  943.         mov        dx,03ceh

  944.         selreg        5
  945.         movreg        0
  946.         selreg        0
  947.         movreg        0
  948.         selreg        1
  949.         movreg        0fh

  950.         xor        bx,bx
  951.         mov        di,bx

  952.         mov        cx,19200d

  953.         rep        stosw

  954.         restoremode
  955.         selreg        1
  956.         movreg        00h
  957.         selreg        5
  958.         movreg        0
  959.         pop        di
  960.         pop        si

  961.         pop        ds
  962.         pop        es
  963.         mov        sp,bp
  964.         pop        bp
  965.         cli
  966.         ret
  967. _cleardevice        endp

  968. @clearviewport$qv label far
  969. _clearviewport        proc    far
  970.         sti
  971.         push        bp
  972.         mov        bp,sp
  973.         pushds
  974.         push        si
  975.         push        di
  976.         mov        ax,fillsettings.fillcolor
  977.         mov        [forline],ax

  978.         mov        ax,0
  979.         mov        fillsettings.fillcolor,ax

  980.         mov        ax,viewportsetting.bottom
  981.         sub        ax,viewportsetting.top
  982.         push        ax
  983.         mov        ax,viewportsetting.right
  984.         sub        ax,viewportsetting.left
  985.         push        ax
  986.         xor        ax,ax
  987.         push        ax
  988.         xor        ax,ax
  989.         push        ax
  990.         call        _bar
  991.         mov        ax,[forline]
  992.         mov        fillsettings.fillcolor,ax

  993.         pop        di
  994.         pop        si

  995.         pop        ds
  996.         mov        sp,bp
  997.         pop        bp
  998.         cli
  999.         ret
  1000. _clearviewport        endp


  1001. _getaddr        proc    near

  1002.         mov        cx,80d
  1003.         mul        cx
  1004.         mov        cl,bl

  1005.         shr        bx,1
  1006.         shr        bx,1
  1007.         shr        bx,1

  1008.         add        bx,ax

  1009.         and        cl,07h
  1010.         mov        al,80h
  1011.         shr        al,cl
  1012.         mov        cl,al

  1013.         ret
  1014.         _getaddr        endp

  1015. _getbit        proc    near

  1016.         mov        cx,80d
  1017.         mul        cx
  1018.         mov        cl,bl

  1019.         shr        bx,1
  1020.         shr        bx,1
  1021.         shr        bx,1

  1022.         add        bx,ax

  1023.         and        cl,07h
  1024.         mov        al,0ffh
  1025.         shr        al,cl
  1026.         mov        cl,al

  1027.         ret
  1028.         _getbit        endp

  1029. @putpixel$qiii label far
  1030. _putpixel        proc    far
  1031.         sti
  1032.         push        bp
  1033.         mov        bp,sp
  1034.         push        es
  1035.         pushds

  1036.         mov        ax,0a000h
  1037.         mov        es,ax
  1038.         setmode0
  1039.         selreg  5
  1040.         movreg        2
  1041.         mov        ax,[bp+8]
  1042.         mov        bx,[bp+6]
  1043.         add     ax,viewportsetting.top
  1044.         add     bx,viewportsetting.left

  1045.         cmp        ax,viewportsetting.bottom
  1046.         jnbe        putexit
  1047.         cmp        bx,viewportsetting.right
  1048.         jnbe        putexit
  1049.         call        _getaddr
  1050.         mov        dx,03ceh
  1051.         selreg        8
  1052.         movreg        cl

  1053.         mov        al,[bp+10]
  1054.         mov        ah,es:[bx]
  1055.         mov        es:[bx],al

  1056. putexit:
  1057.         restoremode
  1058.         selreg        5
  1059.         movreg        0
  1060.         selreg        8
  1061.         movreg        0ffh

  1062.         pop        ds
  1063.         pop        es
  1064.         mov        sp,bp
  1065.         pop        bp
  1066.         cli
  1067.         ret
  1068.         _putpixel        endp

  1069. @setwritemode$qi label far
  1070. _setwritemode        proc    far
  1071.         sti
  1072.         push        bp
  1073.         mov        bp,sp
  1074.         pushds

  1075.         mov        dx,3ceh
  1076.         selreg        3
  1077.         in        al,dx
  1078.         mov        bx,[bp+6]
  1079.         cmp        bx,0
  1080.         jne        setlb
  1081.         mov        al,0
  1082.         jmp        setlb1
  1083. setlb:
  1084.         or        al,24d
  1085. setlb1:
  1086.         out        dx,al
  1087.         mov        [mode],al

  1088.         pop        ds
  1089.         mov        sp,bp
  1090.         pop        bp
  1091.         cli
  1092.         ret
  1093. _setwritemode        endp

  1094. @setcolor$qi label far
  1095. _setcolor         proc    far
  1096.         push        bp
  1097.         mov        bp,sp
  1098.         pushds

  1099.         mov        bx,[bp+6]
  1100.         and        bx,15d

  1101.         mov        [color],bl

  1102.         pop        ds
  1103.         mov        sp,bp
  1104.         pop        bp
  1105.         ret
  1106.         _setcolor endp

  1107. @setviewport$qiiiii label far
  1108. _setviewport        proc        far
  1109.         push        bp
  1110.         mov        bp,sp
  1111.         pushds

  1112.         mov        ax,[bp+6]
  1113.         mov        [viewportsetting.left],ax
  1114.         mov        ax,[bp+8]
  1115.         mov        [viewportsetting.top],ax
  1116.         mov        ax,[bp+10]
  1117.         cmp        ax,[viewportsetting.left]
  1118.         jge        sl1
  1119.         mov        bx,ax
  1120.         mov        ax,[viewportsetting.left]
  1121.         mov        [viewportsetting.left],bx
  1122. sl1:
  1123.         mov        [viewportsetting.right],ax
  1124.         mov        ax,[bp+12]
  1125.         cmp        ax,[viewportsetting.top]
  1126.         jge        sl2
  1127.         mov        bx,ax
  1128.         mov        ax,[viewportsetting.top]
  1129.         mov        [viewportsetting.top],bx
  1130. sl2:
  1131.         mov        [viewportsetting.bottom],ax
  1132.         mov        ax,[bp+14]
  1133.         mov        [viewportsetting.clip],ax

  1134.         pop        ds
  1135.         mov        sp,bp
  1136.         pop        bp
  1137.         ret
  1138.         _setviewport endp
  1139. @getviewsettings$qn12viewporttype label far

  1140. _getviewsettings proc        far
  1141.         push        bp
  1142.         mov        bp,sp
  1143.         pushds

  1144.         mov        bx,[bp+6]
  1145.         mov        ax,[viewportsetting.left]
  1146.         mov        ss:[bx],ax
  1147.         mov        ax,[viewportsetting.top]
  1148.         mov        ss:[bx+2],ax
  1149.         mov        ax,[viewportsetting.right]
  1150.         mov        ss:[bx+4],ax
  1151.         mov        ax,[viewportsetting.bottom]
  1152.         mov        ss:[bx+6],ax
  1153.         mov        ax,[viewportsetting.clip]
  1154.         mov        ss:[bx+8],ax

  1155.         pop        ds
  1156.         mov        sp,bp
  1157.         pop        bp
  1158.         ret
  1159. _getviewsettings endp

  1160. _setfillstyle        proc        far
  1161.         push        bp
  1162.         mov        bp,sp
  1163.         pushds

  1164.         mov        ax,[bp+6]
  1165.         mov        fillsettings.pattern,ax
  1166.         mov        ax,[bp+8]
  1167.         mov        fillsettings.fillcolor,ax

  1168.         pop        ds
  1169.         mov        sp,bp
  1170.         pop        bp
  1171.         ret
  1172. _setfillstyle endp

  1173. _getfillsettings proc        far
  1174.         push        bp
  1175.         mov        bp,sp
  1176.         pushds

  1177.         mov        bx,[bp+6]
  1178.         mov        ax,fillsettings.pattern
  1179.         mov        [bx],ax
  1180.         mov        ax,fillsettings.fillcolor
  1181.         mov        [bx+2],ax

  1182.         pop        ds
  1183.         mov        sp,bp
  1184.         pop        bp
  1185.         ret
  1186.         _getfillsettings endp

  1187. @getmax label far
  1188. _getmaxx proc        far
  1189.         push        bp
  1190.         mov        bp,sp
  1191.         mov        ax,639d
  1192.         mov        sp,bp
  1193.         pop        bp
  1194.         ret
  1195.         _getmaxx endp

  1196. @getmaxy$qv label far
  1197. _getmaxy proc        far
  1198.         push        bp
  1199.         mov        bp,sp
  1200.         mov        ax,479d
  1201.         mov        sp,bp
  1202.         pop        bp
  1203.         ret
  1204.         _getmaxy endp


  1205. @initgraph$qv label far
  1206. _initgraph proc        far
  1207.         push        bp
  1208.         mov        bp,sp
  1209.         xor        ah,ah
  1210.         mov        al,12h
  1211.         int         10h
  1212.         mov        sp,bp
  1213.         pop        bp
  1214.         ret
  1215.         _initgraph endp

  1216. @closegraph$qv label far
  1217. _closegraph proc        far
  1218.         push        bp
  1219.         mov        bp,sp
  1220.         xor        ah,ah
  1221.         mov        al,3
  1222.         int         10h
  1223.         mov        sp,bp
  1224.         pop        bp
  1225.         ret
  1226.         _closegraph endp

  1227. @getbkcolor$qv label far
  1228. _getbkcolor        proc    far
  1229.         push        bp
  1230.         pushds
  1231.         mov        bp,sp
  1232.         xor        ah,ah
  1233.         mov        al,[bkcolor]
  1234.         pop        ds
  1235.         mov        sp,bp
  1236.         pop        bp
  1237.         ret
  1238. _getbkcolor        endp

  1239. @getcolor$qv label far
  1240. _getcolor        proc    far
  1241.         push        bp
  1242.         pushds
  1243.         mov        bp,sp
  1244.         xor        ah,ah
  1245.         mov        al,[color]
  1246.         pop        ds
  1247.         mov        sp,bp
  1248.         pop        bp
  1249.         ret
  1250. _getcolor        endp

  1251. @getwritemode$qv label far
  1252. _getwritemode        proc    far
  1253.         push        bp
  1254.         mov        bp,sp
  1255.         pushds
  1256.         mov        dx,3ceh
  1257.         selreg        3
  1258.         in        al,dx
  1259.         and        al,24d
  1260.         cmp        al,0
  1261.         je        setlbm
  1262.         mov        al,1
  1263. setlbm:
  1264.         xor        ah,ah
  1265.         pop        ds
  1266.         mov        sp,bp
  1267.         pop        bp
  1268.         ret
  1269. _getwritemode        endp

  1270. @setlinestyle$qii label far
  1271. _setlinestyle        proc    far
  1272.         push        bp
  1273.         pushds
  1274.         mov        bp,sp
  1275.         xor        ah,ah
  1276.         mov        al,[color]
  1277.         pop        ds
  1278.         mov        sp,bp
  1279.         pop        bp
  1280.         ret
  1281. _setlinestyle   endp

  1282. @floodfill$qiii label far
  1283. _floodfill        proc    far
  1284.         push        bp
  1285.         pushds
  1286.         mov        bp,sp
  1287.         xor        ah,ah
  1288.         mov        al,[color]
  1289.         mov        sp,bp
  1290.         pop        ds
  1291.         pop        bp
  1292.         ret
  1293. _floodfill   endp
  1294. ;--------------------------------------------------------------------
  1295. ;功能: 用于获取视窗信息
  1296. ;参数: &VIEWPORTTYPE
  1297. @restoreview$qn12viewporttype        label        far
  1298. _restoreview           proc        far
  1299. ;--------------------------------------------------------------------
  1300.         push        bp
  1301.         mov        bp,sp
  1302.         push        ds
  1303.         push        es
  1304.         push        si
  1305.         push        di

  1306.         mov        si,[bp+6]

  1307.         mov        ax,[bp+8]
  1308.         mov        ds,ax

  1309.         mov        ax,seg viewportsetting
  1310.         mov        es,ax
  1311.         mov        di,offset viewportsetting
  1312.         mov        cx,5
  1313.         rep movsw

  1314.         pop        di
  1315.         pop        si
  1316.         pop        es
  1317.         pop        ds
  1318.         mov        sp,bp
  1319.         pop        bp
  1320.         ret
  1321. _restoreview endp



  1322. @writehz16$qiiinuc label far

  1323. _writehz16 proc far
  1324.         sti
  1325.         push        bp
  1326.         mov        bp,sp
  1327.         push        es
  1328.         pushds
  1329.         push        si
  1330.         push        ss
  1331.         push        di

  1332.         mov        ax,0a000h
  1333.         mov        es,ax

  1334.         setmode0
  1335.         selreg  5
  1336.         movreg        2

  1337.         mov        di,[bp+6]      ;x0
  1338.         mov        bx,di
  1339.         and        bl,07
  1340.         mov        bh,0ffh
  1341.         mov        cl,bl
  1342.         shr        bh,cl
  1343.         mov        ax,[bp+8]      ;y0
  1344.         mov        cx,80d
  1345.         mul        cx

  1346.         shr        di,1
  1347.         shr        di,1
  1348.         shr        di,1
  1349.         add        di,ax

  1350.         mov        cx,10h
  1351.         mov        dx,03ceh
  1352.         mov        al,8
  1353.         out        dx,al
  1354.         inc        dx
  1355.         mov        ax,[bp+10]
  1356.         mov        ah,al

  1357.         mov        si,[bp+14]
  1358.         mov        ss,si
  1359.         mov        si,[bp+12]

  1360.         cmp        bl,0
  1361.         jne        llpp
  1362. llp:
  1363.         mov        al,ss:[si]
  1364.         out        dx,al
  1365.         mov        al,es:[di]
  1366.         mov        es:[di],ah
  1367.         inc        si
  1368.         inc        di
  1369.         mov        al,ss:[si]
  1370.         inc si
  1371.         out        dx,al
  1372.         mov        al,es:[di]
  1373.         mov        es:[di],ah
  1374.         add        di,79d
  1375.         loop        llp

  1376.         jmp        succ

  1377. llpp:
  1378.         push        cx

  1379.         mov        al,ss:[si]
  1380.         mov        cl,bl
  1381.         shr        al,cl
  1382.         out        dx,al
  1383.         mov        al,es:[di]
  1384.         mov        es:[di],ah

  1385.         inc        di
  1386.         mov        al,ss:[si]
  1387.         mov        cl,8
  1388.         sub        cl,bl
  1389.         shl        al,cl

  1390.         inc        si
  1391.         mov        ch,ss:[si]
  1392.         mov        cl,bl
  1393.         shr        ch,cl
  1394.         or        al,ch
  1395.         out        dx,al
  1396.         mov        al,es:[di]
  1397.         mov        es:[di],ah

  1398.         inc di

  1399.         mov        al,ss:[si]
  1400.         mov        cl,8
  1401.         sub        cl,bl
  1402.         shl        al,cl
  1403.         out        dx,al

  1404.         mov        al,es:[di]
  1405.         mov        es:[di],ah

  1406.         add        di,78d
  1407.         inc        si
  1408.         pop        cx
  1409.         loop        llpp


  1410. succ:
  1411.         mov        al,0ffh
  1412.         out dx,al

  1413.         restoremode
  1414.         selreg        5
  1415.         movreg        0

  1416.         pop        di
  1417.         pop        ss
  1418.         pop        si
  1419.         pop        ds
  1420.         pop        es
  1421.         mov        sp,bp
  1422.         pop        bp
  1423.         cli
  1424.         ret

  1425. _writehz16 endp

  1426. @writeascil$qiiii label far
  1427. _writeascil proc far
  1428.         sti
  1429.         push        bp
  1430.         mov        bp,sp
  1431.         push        es
  1432.         pushds
  1433.         push        si
  1434.         push        ss
  1435.         push        di

  1436.         mov        ax,0a000h
  1437.         mov        es,ax

  1438.         setmode0
  1439.         selreg        5
  1440.         in        al,dx
  1441.         mov        old_5_bit,al
  1442.         movreg        2
  1443.         mov        di,[bp+6]      ;x0
  1444.         mov        bx,di
  1445.         and        bl,07
  1446.         mov        bh,0ffh
  1447.         mov        cl,bl
  1448.         shr        bh,cl
  1449.         mov        ax,[bp+8]      ;y0
  1450.         mov        cx,80d
  1451.         mul        cx

  1452.         shr        di,1
  1453.         shr        di,1
  1454.         shr        di,1
  1455.         add        di,ax

  1456.         mov        dx,03ceh
  1457.         mov        al,8
  1458.         out        dx,al
  1459.         inc        dx

  1460.         in        al,dx
  1461.         mov        old_8_bit,al


  1462.         mov        ax,[bp+10]
  1463.         mov        ah,al

  1464.         mov        si,[bp+12]
  1465.         sub        si,32d
  1466.         shl        si,1
  1467.         shl        si,1
  1468.         shl        si,1
  1469.         shl        si,1

  1470.         mov        cx,offset ascildot

  1471.         add        si,cx

  1472.         mov        cx,16d

  1473.         cmp        bl,0
  1474.         jne        llpp2
  1475. llp2:
  1476.         mov        al,[si]
  1477.         out        dx,al
  1478.         mov        al,es:[di]
  1479.         mov        es:[di],ah
  1480.         inc        si
  1481.         add        di,80d
  1482.         loop        llp2

  1483.         jmp        succ2

  1484. llpp2:
  1485.         push        cx

  1486.         mov        al,[si]
  1487.         mov        cl,bl
  1488.         shr        al,cl
  1489.         out        dx,al
  1490.         mov        al,es:[di]
  1491.         mov        es:[di],ah

  1492.         inc        di
  1493.         mov        al,[si]

  1494.         mov        cl,8
  1495.         sub        cl,bl
  1496.         shl        al,cl

  1497.         out        dx,al
  1498.         mov        al,es:[di]
  1499.         mov        es:[di],ah

  1500.         add        di,79d
  1501.         inc        si
  1502.         pop        cx
  1503.         loop        llpp2


  1504. succ2:

  1505.         restoremode

  1506.         selreg 5
  1507.         movreg old_5_bit
  1508.         selreg 8
  1509.         movreg old_8_bit

  1510.         pop        di
  1511.         pop        ss
  1512.         pop        si
  1513.         pop        ds
  1514.         pop        es
  1515.         mov        sp,bp
  1516.         pop        bp
  1517.         cli
  1518.         ret

  1519. _writeascil endp

  1520. @loadascil$qv label far
  1521. _loadascil        proc    far
  1522.         push        bp
  1523.         mov                bp,sp
  1524.         pushds

  1525.         mov        dx,offset hzk
  1526.         mov        ah,03dh
  1527.         xor        al,al
  1528.         int        21h

  1529.         jnb        openright

  1530.         mov        dx,offset openerror
  1531.         mov        ah,9
  1532.         int        21h
  1533.         jmp        closeright
  1534. openright:
  1535.         mov        bx,ax
  1536.         mov        ah,03fh
  1537.         mov        dx,offset ascildot
  1538.         mov        cx,1536d
  1539.         int     21h

  1540.         jnb        readright

  1541.         mov        dx,offset readerror
  1542.         mov        ah,9
  1543.         int        21h
  1544.         jmp        closeright
  1545. readright:

  1546.         mov        ah,03eh
  1547.         int        21h
  1548.         jnb        closeright
  1549.         mov        dx,offset closeerror
  1550.         mov        ah,9
  1551.         int        21h
  1552.         jmp        closeright
  1553. closeright:
  1554.         pop        ds
  1555.         pop        bp
  1556.         ret
  1557. _loadascil   endp

  1558. ;--------------------------------------------------------------------
  1559. @installclock$qv label far
  1560. _installclock        proc        far
  1561. ;--------------------------------------------------------------------
  1562.         push        bp
  1563.         mov        bp,sp
  1564.         pushds
  1565.         push        es

  1566.         mov        ah,35h
  1567.         mov        al,1ch
  1568.         int        21h
  1569.         mov        int_1c_off,bx
  1570.         mov        int_1c_seg,es

  1571.         push        ds
  1572.         mov        ax,cs
  1573.         mov        ds,ax
  1574.         mov        ah,25h
  1575.         mov        al,1ch
  1576.         mov        dx,offset new_int_1c
  1577.         int        21h
  1578.         pop        ds

  1579.         pop        es
  1580.         pop        ds
  1581.         mov        sp,bp
  1582.         pop        bp
  1583.         ret
  1584. _installclock endp

  1585. ;--------------------------------------------------------------------
  1586. @quitclock$qv label far
  1587. _quitclock        proc        far
  1588. ;--------------------------------------------------------------------
  1589.         push        bp
  1590.         mov        bp,sp
  1591.         pushds

  1592.         mov        dx,int_1c_off
  1593.         mov        ax,int_1c_seg
  1594.         mov        ds,ax

  1595.         mov        ah,25h
  1596.         mov        al,1ch

  1597.         int        21h

  1598.         pop        ds
  1599.         mov        sp,bp
  1600.         pop        bp
  1601.         ret
  1602. _quitclock endp

  1603. ;--------------------------------------------------------------------
  1604. @resetclock$qv label far
  1605. _resetclock        proc        far
  1606. ;--------------------------------------------------------------------
  1607.         push        bp
  1608.         mov        bp,sp
  1609.         pushds
  1610.         xor        ax,ax
  1611.         mov        currtime,ax
  1612.         pop        ds
  1613.         mov        sp,bp
  1614.         pop        bp
  1615.         ret
  1616. _resetclock endp
  1617. ;--------------------------------------------------------------------
  1618. @setmaxtime$qi label far
  1619. _setmaxtime        proc        far
  1620. ;--------------------------------------------------------------------
  1621.         push        bp
  1622.         mov        bp,sp
  1623.         pushds

  1624.         mov        ax,[bp+6]

  1625.         mov        maxtime,ax

  1626.         pop        ds
  1627.         mov        sp,bp
  1628.         pop        bp
  1629.         ret
  1630. _setmaxtime endp

  1631. ;--------------------------------------------------------------------
  1632. @timeout$qv label far
  1633. _timeout        proc        far
  1634. ;--------------------------------------------------------------------
  1635.         push        bp
  1636.         mov        bp,sp
  1637.         pushds

  1638.         mov        ax,currtime
  1639.         cmp        ax,maxtime
  1640.         jge        outt
  1641.         xor        ax,ax
  1642.         jmp        out1
  1643. outt:
  1644.         mov        ax,1
  1645. out1:
  1646.         pop        ds
  1647.         mov        sp,bp
  1648.         pop        bp
  1649.         ret
  1650. _timeout endp
  1651. ;--------------------------------------------------------------------
  1652. showtime        proc        far
  1653. ;--------------------------------------------------------------------
  1654.         mov        cl,10d
  1655.         div        cl
  1656.         mov        cx,ax
  1657.         xor        ax,ax
  1658.         mov        al,cl
  1659.         add        ax,48d

  1660.         push        cx
  1661.         push        ax

  1662.         mov        ax,128d
  1663.         push        ax
  1664.         mov        ax,timebkcol
  1665.         push ax
  1666.         push        dx
  1667.         push        bx
  1668.         call        _writeascil
  1669.         pop        bx
  1670.         pop        dx
  1671.         pop        ax
  1672.         pop        ax

  1673.         pop        ax

  1674.         push        ax
  1675.         mov        ax,timecol
  1676.         push ax
  1677.         push        dx
  1678.         push        bx
  1679.         call        _writeascil
  1680.         pop        bx
  1681.         pop        dx
  1682.         pop        ax
  1683.         pop        ax

  1684.         pop        cx

  1685.         xor        ax,ax
  1686.         mov        al,ch
  1687.         add        ax,48d
  1688.         add        bx,8
  1689.         push        ax

  1690.         mov        ax,128d
  1691.         push        ax
  1692.         mov        ax,timebkcol
  1693.         push ax
  1694.         push        dx
  1695.         push        bx
  1696.         call        _writeascil
  1697.         pop        bx
  1698.         pop        dx
  1699.         pop        ax
  1700.         pop        ax
  1701.         pop        ax


  1702.         push        ax
  1703.         mov        ax,timecol
  1704.         push ax
  1705.         push        dx
  1706.         push        bx
  1707.         call        _writeascil
  1708.         pop        bx
  1709.         pop        dx
  1710.         pop        ax
  1711.         pop        ax

  1712.         ret
  1713. showtime endp


  1714. newtime        proc        far
  1715.         mov        al,offsecond
  1716.         inc        al

  1717.         mov        bx,timex
  1718.         add        bx,48d
  1719.         mov        dx,timey
  1720.         push        ax
  1721.         push        bx
  1722.         call        showtime
  1723.         pop        bx
  1724.         pop        ax
  1725.         mov offsecond,al

  1726.         cmp        al,60d
  1727.         jb        ot1
  1728.         xor        al,al
  1729.         mov offsecond,al

  1730.         push        ax
  1731.         push        bx
  1732.         call        showtime
  1733.         pop        bx
  1734.         pop        ax


  1735.         mov        al,offminute
  1736.         inc        al
  1737.         mov        offminute,al

  1738.         sub        bx,24d

  1739.         push        ax
  1740.         push        bx
  1741.         call        showtime
  1742.         pop        bx
  1743.         pop        ax

  1744.         cmp        al,60d
  1745.         jb        ot1

  1746.         xor        al,al
  1747.         mov offminute,al

  1748.         push        ax
  1749.         push        bx
  1750.         call        showtime
  1751.         pop        bx
  1752.         pop        ax

  1753.         mov        al,offhour
  1754.         inc        al
  1755.         mov        offhour,al
  1756.         sub        bx,24d

  1757.         push        ax
  1758.         push        bx
  1759.         call        showtime
  1760.         pop        bx
  1761.         pop        ax

  1762. ot1:
  1763.         ret
  1764. newtime        endp






  1765. ;--------------------------------------------------------------------
  1766. @settimeon$qiiii label far
  1767. _settimeon        proc        far
  1768. ;--------------------------------------------------------------------
  1769.         push        bp
  1770.         mov        bp,sp
  1771.         pushds

  1772.         mov        ax,[bp+6]
  1773.         mov        timex,ax
  1774.         mov        ax,[bp+8]
  1775.         mov        timey,ax
  1776.         mov        ax,[bp+10]
  1777.         mov        timecol,ax
  1778.         mov        ax,[bp+12]
  1779.         mov        timebkcol,ax

  1780.         mov        al,0
  1781.         mov        offhour,al
  1782.         mov        offminute,al
  1783.         mov        offsecond,al
  1784.         mov        timer,al
  1785.         mov        al,1
  1786.         mov        timeon,al

  1787.         pop        ds
  1788.         mov        sp,bp
  1789.         pop        bp
  1790.         ret
  1791. _settimeon endp

  1792. ;--------------------------------------------------------------------
  1793. @setclockon$qiiii label far
  1794. _setclockon        proc        far
  1795. ;--------------------------------------------------------------------
  1796.         push        bp
  1797.         mov        bp,sp
  1798.         pushds

  1799.         mov        ax,[bp+6]
  1800.         mov        clockx,ax
  1801.         mov        ax,[bp+8]
  1802.         mov        clocky,ax
  1803.         mov        ax,[bp+10]
  1804.         mov        timecol,ax
  1805.         mov        ax,[bp+12]
  1806.         mov        timebkcol,ax

  1807.         mov        ah,2ch
  1808.         int        21h
  1809.         mov        abshour,ch
  1810.         mov        absminute,cl
  1811.         mov        abssecond,dh

  1812.         mov        al,1
  1813.         mov        clockon,al


  1814.         pop        ds
  1815.         mov        sp,bp
  1816.         pop        bp
  1817.         ret
  1818. _setclockon endp

  1819. ;--------------------------------------------------------------------
  1820. @M_gettime$qnuc label far
  1821. _M_gettime  proc        far
  1822. ;--------------------------------------------------------------------
  1823.         push        bp
  1824.         mov        bp,sp
  1825.         pushds
  1826.         push        si
  1827.         mov        si,[bp+6]
  1828.         mov        ax,[bp+8]
  1829.         mov        ds,ax

  1830.         mov        ah,2ch
  1831.         int        21h

  1832.         xor        ax,ax
  1833.         mov        al,ch
  1834.         mov        dl,10d
  1835.         div        dl
  1836.         add        ah,48d
  1837.         add        al,48d
  1838.         mov        ds:[si],al
  1839.         inc        si
  1840.         mov        ds:[si],ah
  1841.         inc        si
  1842.         mov        ah,':'
  1843.         mov        ds:[si],ah
  1844.         inc        si

  1845.         xor        ax,ax
  1846.         mov        al,cl
  1847.         mov        dl,10d
  1848.         div        dl
  1849.         add        ah,48d
  1850.         add        al,48d
  1851.         mov        ds:[si],al
  1852.         inc        si
  1853.         mov        ds:[si],ah
  1854.         inc        si
  1855.         mov        ah,':'
  1856.         mov        ds:[si],ah
  1857.         inc        si

  1858.         xor        ax,ax
  1859.         mov        al,dh
  1860.         mov        dl,10d
  1861.         div        dl
  1862.         add        ah,48d
  1863.         add        al,48d
  1864.         mov        ds:[si],al
  1865.         inc        si
  1866.         mov        ds:[si],ah
  1867.         inc        si
  1868.         xor        ah,ah
  1869.         mov        ds:[si],ah

  1870.         pop        si
  1871.         pop        ds
  1872.         mov        sp,bp
  1873.         pop        bp
  1874.         ret
  1875. _M_gettime endp


  1876. ;--------------------------------------------------------------------
  1877. @setclockoff$qv label far
  1878. _setclockoff        proc        far
  1879. ;--------------------------------------------------------------------
  1880.         push        bp
  1881.         mov        bp,sp
  1882.         pushds

  1883.         mov        al,0
  1884.         mov        clockon,al

  1885.         pop        ds
  1886.         mov        sp,bp
  1887.         pop        bp
  1888.         ret
  1889. _setclockoff endp

  1890. ;--------------------------------------------------------------------
  1891. @settimeoff$qv label far
  1892. _settimeoff        proc        far
  1893. ;--------------------------------------------------------------------
  1894.         push        bp
  1895.         mov        bp,sp
  1896.         pushds

  1897.         mov        al,0
  1898.         mov        timeon,al

  1899.         pop        ds
  1900.         mov        sp,bp
  1901.         pop        bp
  1902.         ret
  1903. _settimeoff endp

  1904. ;--------------------------------------------------------------------
  1905. @M_random$qi label far
  1906. _M_random        proc        far
  1907. ;--------------------------------------------------------------------
  1908.         push        bp
  1909.         mov        bp,sp
  1910.         pushds
  1911.         push        es
  1912.         push        di
  1913.         push        si

  1914.         xor        ax,ax
  1915.         mov        es,ax
  1916.         mov        di,046ch
  1917.         mov        si,es:[di]
  1918.         mov        ax,ds:[si]

  1919. ;        mov        dx,ds:[si+2]
  1920.         and        dx,00h
  1921. ;        and        ax,ffffh
  1922.         mov        si,randsi
  1923.         inc        si
  1924.         cmp        si,982d
  1925.         jb        lk
  1926.         mov        si,0
  1927. lk:
  1928.         mov        randsi,si
  1929.         mov        bl,ascildot[si]
  1930.         mov        bh,ascildot[si+1]
  1931.         add        ax,bx

  1932.         mov        bx,[bp+6]
  1933.         cmp        bx,0
  1934.         je        oi
  1935.         div        bx
  1936. oi:
  1937.         mov        ax,dx

  1938.         pop        si
  1939.         pop        di
  1940.         pop        es
  1941.         pop        ds
  1942.         mov        sp,bp
  1943.         pop        bp
  1944.         ret
  1945. _M_random endp


  1946. newclock        proc        far
  1947. ;        xor        ah,ah

  1948.         mov        al,abssecond
  1949.         inc        al
  1950.         mov        bx,clockx
  1951.         add        bx,48d
  1952.         mov        dx,clocky
  1953.         push        ax
  1954.         push        bx
  1955.         call        showtime
  1956.         pop        bx
  1957.         pop        ax

  1958.         mov abssecond,al

  1959.         cmp        al,60d
  1960.         jb        oot1
  1961.         xor        al,al
  1962.         mov abssecond,al

  1963.         push        ax
  1964.         push        bx
  1965.         call        showtime
  1966.         pop        bx
  1967.         pop        ax


  1968.         mov        al,absminute
  1969.         inc        al
  1970.         mov        absminute,al

  1971.         sub        bx,24d

  1972.         push        ax
  1973.         push        bx
  1974.         call        showtime
  1975.         pop        bx
  1976.         pop        ax

  1977.         cmp        al,60d
  1978.         jb        oot1

  1979.         xor        al,al
  1980.         mov absminute,al

  1981.         push        ax
  1982.         push        bx
  1983.         call        showtime
  1984.         pop        bx
  1985.         pop        ax

  1986.         mov        al,abshour
  1987.         inc        al
  1988.         mov        abshour,al
  1989.         sub        bx,24d

  1990.         push        ax
  1991.         push        bx
  1992.         call        showtime
  1993.         pop        bx
  1994.         pop        ax
  1995. oot1:
  1996.         ret
  1997. newclock        endp


  1998. ;--------------------------------------------------------------------
  1999. new_int_1c        proc        far
  2000. ;--------------------------------------------------------------------
  2001.         push        bp
  2002.         mov        bp,sp
  2003.         push        es
  2004.         push        ax
  2005.         push        bx
  2006.         push        cx
  2007.         push        dx
  2008.         push        si
  2009.         push        di
  2010.         pushf
  2011.         pushds


  2012.         mov        al,clocker
  2013.         inc        al
  2014.         cmp        al,18d
  2015.         jb        llll

  2016.         mov        ax,currtime
  2017.         inc        ax
  2018.         mov        currtime,ax
  2019.         mov        ax,0
  2020. llll:
  2021.         mov        clocker,al

  2022.         mov        ax,rule
  2023.         inc        ax
  2024.         mov        rule,ax
  2025.         cmp        ax,1620d


  2026.         jb        lllll
  2027.         mov        ax,0
  2028.         mov        rule,ax
  2029.         mov        al,offsecond
  2030.         inc        al
  2031.         mov        offsecond,al
  2032.         mov        al,abssecond
  2033.         inc        al
  2034.         mov        abssecond,al
  2035. lllll:
  2036.         mov        al,clockon
  2037.         cmp        al,1
  2038.         je        ottt
  2039.         mov        al,timeon
  2040.         cmp        al,1
  2041.         je        ottt
  2042.         jmp        ot
  2043. ottt:

  2044.         mov        al,timer
  2045.         inc        al
  2046.         mov        timer,al
  2047.         cmp        al,18d
  2048.         jb ot

  2049.         xor        ax,ax
  2050.         mov timer,al

  2051.         mov        al,clockon
  2052.         cmp        al,0
  2053.         je        oto
  2054.         call        newclock
  2055. oto:
  2056.         mov        al,timeon
  2057.         cmp        al,0
  2058.         je        ot
  2059.         call        newtime
  2060. ot:

  2061.         pop        ds
  2062.         popf
  2063.         pop        di
  2064.         pop        si
  2065.         pop        dx
  2066.         pop        cx
  2067.         pop        bx
  2068.         pop        ax
  2069.         pop        es
  2070.         mov        sp,bp
  2071.         pop        bp
  2072.         iret
  2073. new_int_1c endp

  2074. end

复制代码

论坛徽章:
0
18 [报告]
发表于 2004-03-10 01:07 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

再贴一个,也是94年写的,当时在dos下面做个现在类似win的程序。
自己实现的图形库、拼音输入法、ems管理、菜单、按钮、多窗口管理,
管理了鼠标、键盘等消息事件。



  1. void main(int argc,char *argv[])
  2. {
  3. int i=0;
  4. MENU menu;
  5. GET mainget;
  6. MENU popu0,popu1,popu2;

  7.         initgraph();
  8.         hzini();
  9.   echo_off();
  10.   load_image(0,0,"c:\\service\\speed.img");
  11.   echo_on();
  12.   delay(300);
  13.   setwritemode(1);
  14.   pyini();
  15.   xmax=getmaxx();
  16.   ymax=getmaxy();
  17.   mouse(xmax,ymax);
  18.   EMSini();

  19.   if(argc==2)
  20.   {
  21.    strcpy(filename,argv[1]);
  22.    while(filename[i]!='\0'&&filename[i]!='.'){bodyname[i]=filename[i];i++;};
  23.    if(filename[i]!='.') strcat(filename,".scx");
  24.    if ((screen=fopen(filename,"rb"))!=NULL){
  25.           fclose(screen);
  26.           read_();
  27.          };
  28.    }
  29.    else strcpy(filename,"");

  30.   menu.define(20,30,"@vn添加对象;文件管理;格式控制;");
  31.   menu.dist(10,0);
  32.   menu.textsize(16,16);
  33.   popu0.define(5,50,"@hb窗口     F6;LIST选择器;按钮;开关;选择类别;//检测框;-;读取变量;//显示变量;-;框;线;//圆;文本;实心框;//显示图形;");
  34.   popu0.size(120,16);
  35.   popu1.define(90,50,"@hb新建文件;读取文件  F3;存盘      F2;另存为...;-;隐藏菜单  F4;文本编辑;生成函数  F9;-;帮助信息  F1;清屏;退出系统  Alt+Q;");
  36.   popu1.size(130,16);
  37.   popu2.define(180,50,"@hb左对齐 Ctl+L;右对齐 Ctl+R;上对齐 Ctl+U;select Ctl+A;");
  38.   popu2.size(110,16);
  39.   popu0.function(0,(char *) wind_);
  40.   popu0.function(1,(char *) list_);
  41.   popu0.function(2,(char *) buttons_);
  42.   popu0.function(3,(char *) check_);
  43.   popu0.function(4,(char *) choose_);
  44.   popu0.function(7,(char *) get_);

  45.   popu0.function(10,(char *) rectangle_);
  46.   popu0.function(11,(char *) line_);

  47.   popu0.function(13,(char *) text_);
  48.   popu0.function(14,(char *) bar_);

  49.   popu1.function(0,(char *) creat_);
  50.   popu1.function(1,(char *) readfrom_);
  51.   popu1.function(2,(char *) save_);
  52.   popu1.function(3,(char *) saveas_);
  53.   popu1.function(5,(char *) draw_);


  54.   popu1.function(6,(char *) editcomm_);
  55.   popu1.function(7,(char *) generate);
  56.   popu1.function(9,(char *) help_);
  57.   popu1.function(10,(char *) clearscr_);
  58.   popu1.function(11,(char *) quit_);
  59.   menu.setmainmenu();

  60.   menu.setpopu(0,&popu0);
  61.   menu.setpopu(1,&popu1);
  62.   menu.setpopu(2,&popu2);
  63.   mainget.push(&menu);
  64.   mainget.setmouserightkey(SPACE,F4);
  65.   mainget.sethotkey(SPACE,F2,1,(char *)save_);
  66.   mainget.sethotkey(SPACE,F1,1,(char *)help_);
  67.   mainget.sethotkey(SPACE,F3,1,(char *)readfrom_);
  68.   mainget.sethotkey(SPACE,F4,1,(char *)draw_);
  69.   mainget.sethotkey(ALT,'q',1,(char *)quit_);
  70.   mainget.sethotkey(SPACE,F6,1,(char *)wind_);
  71.   mainget.sethotkey(SPACE,F9,1,(char *)generate);
  72.   demowind0.define(0,0,320,350,"SCREEN","blue");
  73.   demowind0.prepare();
  74.   do
  75.   {
  76.     mainget.active();
  77.   }while(1);
  78. }

复制代码



上面的程序可以用来丁直界面,自动生成下面的代码。


  1. /* ------------------------------------------------------------
  2.    屏幕自动生成: s.fun
  3.    From: Speed Software Technology Department, Meng wg
  4.                                                1995-1998  
  5. -------------------------------------------------------------- */
  6. void s(){

  7. GET getmanage;
  8. viewporttype pv;
  9. windows name;
  10. BOTTONS demobut;
  11. int but=0;
  12.      getviewsettings(&pv);
  13.      name.define(100,100,400,300,"设置窗口","nothing");
  14.      name.prepare();
  15.      demobut.define(&but,0,30,"@vt>;B力学帮手;!>;aBut2;//But3;");
  16.         demobut.dist(16,16);
  17.         demobut.textsize(16,16);
  18.      getmanage.push(&demobut);
  19.      getmanage.active();
  20.      name.finish();
  21.      setviewport(pv.left,pv.top,pv.right,pv.bottom,pv.clip);
  22. };
复制代码

论坛徽章:
0
19 [报告]
发表于 2004-03-10 11:07 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

楼上这位大哥真厉害,编了那么多的肯定是高手了,不知道大哥现在做什么了

论坛徽章:
0
20 [报告]
发表于 2004-03-10 13:23 |只看该作者

DOS下看真彩BMP位图的小程序(我给加了注释)

[quote]原帖由 "bierdaci"]楼上这位大哥真厉害,编了那么多的肯定是高手了,不知道大哥现在做什么了[/quote 发表:


兄弟还在编程序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP