home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / C / CLMFEB85.ZIP / CASM.2 < prev    next >
Encoding:
Text File  |  1988-07-25  |  2.9 KB  |  104 lines

  1.  
  2.  
  3.  
  4.                             Listing 2
  5.                     C to Assembler Interface
  6.  
  7. main()
  8. {
  9.  int retvals [4] ;
  10.  int index ;
  11.   SET_MODE ;
  12.   hline(0,0,219,80) ;   /* draw box around screen */
  13.   hline(24,0,219,80) ;    /* i.e., manual window using nonwindow characters */ 
  14.   verline(0,0,219,24) ;
  15.   verline(0,79,219,24) ;
  16.   window(3,3,6,5) ;
  17.   window(10,10,5,6) ;
  18.   window(7,17,10,11) ;
  19.   window(15,40,10,6) ;
  20.   window(5,50,20,16) ;
  21.       /* read c#define PAGE 0
  22.  /* video modes */
  23. #define s40x25_bw 0
  24. #define s40x25_color 1
  25. #define s80x25_bw 2
  26. #define s80x25_color 3
  27. #define med_color 4
  28. #define med_bw 5
  29. #define high_bw 6
  30.  /* video functions */
  31. #define set_type 256
  32. #define set_cur 512
  33. #define read_position 768
  34. #define read_light_pen_position 1024
  35. #define select_page 1280
  36. #define scroll_up 1536
  37. #define scroll_dn 1792
  38. #define read_attribute_char 2048
  39. #define write_attribute_char 2304
  40. #define write_char 2560
  41. #define set_palette 2816
  42. #define write_dot 3072
  43. #define read_dot 3328
  44. #define write_teletype 3584
  45. #define get_state 3840
  46.  /* macros */
  47. #define curpos(row,col) dspio(set_cur,PAGE,0,(((int)row)<<8)+col)
  48. #define SET_MODE dspio(s80x25_bw)
  49. #define horline(ch,width) dspio(write_char+ch,PAGE,width) 
  50. #define hline(row,col,ch,width) curpos(row,col) ; horline(ch,width)
  51. #define wrtchar(ch) dspio(write_char+ch,PAGE,1)
  52.  
  53. main()
  54. {
  55.  int retvals [4] ;
  56. รจ int index ;
  57.   SET_MODE ;
  58.   hline(0,0,219,80) ;   /* draw box around screen */
  59.   hline(24,0,219,80) ;    /* i.e., manual window using nonwindow characters */ 
  60.   verline(0,0,219,24) ;
  61.   verline(0,79,219,24) ;
  62.   window(3,3,6,5) ;
  63.   window(10,10,5,6) ;
  64.   window(7,17,10,11) ;
  65.   window(15,40,10,6) ;
  66.   window(5,50,20,16) ;
  67.       /* read cursor position */
  68.   for (index=0; index <4; index++ ) {
  69.     curpos(index,index+1) ;
  70.     dspio(read_position,PAGE,0,0,retvals) ;
  71.     printf("For page PAGE, Row:%u, Col:%u, cursor mode=%o,%o \n",
  72.       retvals[3]>>8, (retvals[3]<<8)>>8, retvals[2]>>8,(retvals[2]<<8)>>8) ; 
  73.   }
  74.      /* get current video state */
  75.   dspio(get_state,PAGE,0,0,retvals) ;
  76.   printf("Mode: %u, Columns: %u, Active Page: %u \n",
  77.      (retvals[0]<<8)>>8, retvals[0]>>8, retvals[1]>>8 ) ;
  78. }
  79. window(row,col,width,depth) /* start at row,col, i.e. left upper corner */
  80. char row,col ;
  81. {
  82.      /* first do 4 corners */
  83.   curpos(row,col) ;
  84.   wrtchar(214) ;
  85.   curpos(row+depth,col) ;
  86.   wrtchar(211) ; 
  87.   curpos(row,col+width-1) ;
  88.   wrtchar(183) ;
  89.   curpos(row+depth,col+width-1) ;
  90.   wrtchar(189) ;
  91.      /* then connect corners with horizontal and vertical lines */
  92.   hline(row,col+1,196,width-2) ;
  93.   hline(row+depth,col+1,196,width-2) ;
  94.   verline(row+1,col,186,depth-1) ;
  95.   verline(row+1,col+width-1,186,depth-1) ;
  96. }
  97. verline(row,col,ch,len)
  98. char row, col, ch, len ;
  99. {
  100.   char cnt ;
  101.      for (cnt=len; cnt > 0; cnt--) {
  102.     curpos(row++,col) ;
  103.     wrtchar(ch) ;
  104.      }
  105. }