home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 3 / FreeSoftwareCollection3pd199x-jp.img / pao / ms_dos / cdplay / src / crt.c < prev    next >
Text File  |  1980-01-02  |  7KB  |  281 lines

  1. /******************************************************************************
  2. **
  3. **        CRT.LIB << MSC V5.1 >>
  4. **
  5. **        <HISTORY>
  6. **        1990.08.20 : CREATE
  7. **
  8. **        Programed by Y.HIRATA Nifty-ID (NAB03321)
  9. **
  10. ******************************************************************************/
  11.  
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15. #include <dos.h>
  16. #include <conio.h>
  17. #include "crt.h"
  18.  
  19. /******************************************************************************
  20.     CRT_cls : 全画面消去
  21. ******************************************************************************/
  22. unsigned CRT_cls( void )
  23. {
  24.     union    REGS    regs ;
  25.  
  26.     regs.h.ah = 0x02 ;
  27.  
  28.     int86( INT_CRT,®s,®s ) ;
  29.  
  30.     return( regs.h.ah ) ;
  31. }
  32.  
  33. /******************************************************************************
  34.     CRT_cursw : カーソル表示制御
  35. ******************************************************************************/
  36. unsigned CRT_cursw( sw )
  37. unsigned    sw ;        /*  = 0 : カーソル表示しない,  = 1 : カーソル表示する。        */
  38. {
  39.     union    REGS    regs ;
  40.  
  41.     regs.h.ah = 0x0B ;
  42.     if ( sw )
  43.         regs.h.al = 0 ;
  44.     else
  45.         regs.h.al = 1 ;
  46.  
  47.     int86( INT_CRT,®s,®s ) ;
  48.  
  49.     return( regs.h.ah ) ;
  50. }
  51.  
  52. /******************************************************************************
  53.     CRT_setcur : カーソル位置設定
  54. ******************************************************************************/
  55. unsigned CRT_setcur( clm,line )
  56. unsigned    clm ;        /*  桁位置( 1 ~ )                                    */
  57. unsigned    line ;        /*  行位置( 1 ~ )                                    */
  58. {
  59.     union    REGS    regs ;
  60.  
  61.     regs.h.ah = 0x0D ;
  62.     regs.h.dh = line ;
  63.     regs.h.dl = clm ;
  64.  
  65.     int86( INT_CRT,®s,®s ) ;
  66.  
  67.     return( regs.h.ah ) ;
  68. }
  69.  
  70. /******************************************************************************
  71.     CRT_getcur : カーソル位置取得
  72. ******************************************************************************/
  73. unsigned CRT_getcur( clm,line )
  74. unsigned    *clm ;        /*  桁位置( 1 ~ )                                    */
  75. unsigned    *line ;        /*  行位置( 1 ~ )                                    */
  76. {
  77.     union    REGS    regs ;
  78.  
  79.     regs.h.ah = 0x0E ;
  80.  
  81.     int86( INT_CRT,®s,®s ) ;
  82.  
  83.     *line = regs.h.dh ;
  84.     *clm  = regs.h.dl ;
  85.  
  86.     return( regs.h.ah ) ;
  87. }
  88.  
  89. /******************************************************************************
  90.     CRT_setatr : アトリビュート設定
  91. ******************************************************************************/
  92. unsigned CRT_setatr( clm,line,mode,color )
  93. unsigned    clm ;            /*  桁位置( 1 ~ )                                */
  94. unsigned    line ;            /*  行位置( 1 ~ )                                */
  95. unsigned char    mode ;        /*  表示属性                                    */
  96. /*
  97. **    bit : 7       6       5       4       3       2       1       0
  98. **          アンダスコア シークレット  強調    ブリンク   リバース   垂線    オーバライン アンダライン
  99. */
  100. unsigned short    color ;        /*  色識別番号                                    */
  101. /*
  102. **    0:黒色  1:青色  2:赤色  3:紫色  4:緑色  5:水色  6:黄色  7:白色
  103. */
  104. {
  105.     union    REGS    regs ;
  106.     struct    SREGS    sregs ;
  107.     struct _disp_mode {
  108.         char    res ;
  109.         char    mode ;
  110.         unsigned short    color ;
  111.     } disp_mode ;
  112.  
  113.     disp_mode.mode  = mode ;
  114.     disp_mode.color = color ;
  115.  
  116.     regs.h.ah = 0x0F ;
  117.     regs.h.dh = line ;
  118.     regs.h.dl = clm ;
  119.     regs.x.di = (unsigned int)&disp_mode ;
  120.  
  121.     segread( &sregs ) ;
  122.     int86( INT_CRT,®s,®s ) ;
  123.  
  124.     return( regs.h.ah ) ;
  125. }
  126.  
  127. /******************************************************************************
  128.     CRT_getatr : アトリビュート取得
  129. ******************************************************************************/
  130. unsigned CRT_getatr( clm,line,mode,color )
  131. unsigned    clm ;            /*  桁位置( 1 ~ )                                */
  132. unsigned    line ;            /*  行位置( 1 ~ )                                */
  133. unsigned char    *mode ;        /*  表示属性                                    */
  134. /*
  135. **    bit : 7       6       5       4       3       2       1       0
  136. **          アンダスコア シークレット  強調    ブリンク   リバース   垂線    オーバライン アンダライン
  137. */
  138. unsigned short    *color ;    /*  色識別番号                                    */
  139. /*
  140. **    0:黒色  1:青色  2:赤色  3:紫色  4:緑色  5:水色  6:黄色  7:白色
  141. */
  142. {
  143.     union    REGS    regs ;
  144.     struct    SREGS    sregs ;
  145.     struct _disp_mode {
  146.         char    res ;
  147.         char    mode ;
  148.         unsigned short    color ;
  149.     } disp_mode ;
  150.  
  151.     regs.h.ah = 0x10 ;
  152.     regs.h.dh = line ;
  153.     regs.h.dl = clm ;
  154.     regs.x.di = (unsigned int)&disp_mode ;
  155.  
  156.     segread( &sregs ) ;
  157.     int86( INT_CRT,®s,®s ) ;
  158.  
  159.     *mode  = disp_mode.mode ;
  160.     *color = disp_mode.color ;
  161.     return( regs.h.ah ) ;
  162. }
  163.  
  164. /******************************************************************************
  165.     CRT_defatr : デフォルトアトリビュートの設定
  166. ******************************************************************************/
  167. unsigned CRT_defatr( mode,color )
  168. unsigned char    mode ;        /*  表示属性                                    */
  169. /*
  170. **    bit : 7       6       5       4       3       2       1       0
  171. **          アンダスコア シークレット  強調    ブリンク   リバース   垂線    オーバライン アンダライン
  172. */
  173. unsigned short    color ;        /*  色識別番号                                    */
  174. /*
  175. **    0:黒色  1:青色  2:赤色  3:紫色  4:緑色  5:水色  6:黄色  7:白色
  176. */
  177. {
  178.     union    REGS    regs ;
  179.     struct    SREGS    sregs ;
  180.     struct _disp_mode {
  181.         char    res ;
  182.         char    mode ;
  183.         unsigned short    color ;
  184.     } disp_mode ;
  185.  
  186.     disp_mode.mode = mode ;
  187.     disp_mode.color = color ;
  188.  
  189.     regs.h.ah = 0x11 ;
  190.     regs.x.di = (unsigned int)&disp_mode ;
  191.  
  192.     segread( &sregs ) ;
  193.     int86( INT_CRT,®s,®s ) ;
  194.  
  195.     return( regs.h.ah ) ;
  196. }
  197.  
  198. /******************************************************************************
  199.     CRT_scroll : 全画面スクロール(上方向へ1行分)
  200. ******************************************************************************/
  201. unsigned CRT_scrup( void )
  202. {
  203.     union    REGS    regs ;
  204.  
  205.     regs.h.ah = 0x19 ;
  206.     regs.h.al = 0 ;
  207.     regs.x.cx = 1 ;
  208.  
  209.     int86( INT_CRT,®s,®s ) ;
  210.  
  211.     return( regs.h.ah ) ;
  212. }
  213.  
  214. /******************************************************************************
  215.     CRT_putc : 1文字出力(デフォルトアトリビュート & シフトJISコード)
  216. ******************************************************************************/
  217. unsigned CRT_putc( c )
  218. char    c ;                    /*  表示文字                                    */
  219. {
  220.     union    REGS    regs ;
  221.  
  222.     regs.h.ah = 0x1D ;
  223.     regs.h.al = c ;
  224.  
  225.     int86( INT_CRT,®s,®s ) ;
  226.  
  227.     return( regs.h.ah ) ;
  228. }
  229.  
  230. /******************************************************************************
  231.     CRT_puts : 文字列出力(デフォルトアトリビュート & シフトJISコード列)
  232. ******************************************************************************/
  233. unsigned CRT_puts( s )
  234. char    *s ;                /*  表示文字列                                    */
  235. {
  236.     union    REGS    regs ;
  237.     struct    SREGS    sregs ;
  238.  
  239.     regs.h.ah = 0x1E ;
  240.     regs.x.cx = strlen( s ) ;
  241.     regs.x.di = (unsigned int)s ;
  242.  
  243.     segread( &sregs ) ;
  244.     int86( INT_CRT,®s,®s ) ;
  245.  
  246.     return( regs.h.ah ) ;
  247. }
  248.  
  249. /*********************************  改行  ************************************/
  250. void CRT_cr()
  251. {
  252.     unsigned line, clm ;
  253.  
  254.     CRT_getcur( &clm,&line ) ;
  255.     line ++ ;    clm = 1 ;
  256.     if ( line > 24 ) {
  257.         line = MAXLINE ;
  258.         CRT_scrup() ;
  259.     }
  260.     CRT_setcur( clm,line ) ;
  261. }
  262.  
  263. /******************************************************************************
  264.     CRT_beep : BEEP音を出す(カウンタ数,指定時間)
  265. ******************************************************************************/
  266. unsigned CRT_beep( time,count )
  267. unsigned short    time ;        /*  時間   : 10ms 単位                            */
  268. unsigned short    count ;        /*  カウンタ数 : 基本周波数(19200Hz) / 周波数(Hz)    */
  269. {
  270.     union    REGS    regs ;
  271.  
  272.     regs.h.ah = 0x03 ;
  273.     regs.x.bx = time ;
  274.     regs.x.dx = count ;
  275.  
  276.     int86( INT_BEEP,®s,®s ) ;
  277.  
  278.     return( regs.h.ah ) ;
  279. }
  280.  
  281.