home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / sampler1 / c-clr.asm < prev    next >
Assembly Source File  |  1984-10-17  |  4KB  |  122 lines

  1.     PAGE   60,132
  2. ;  CLR.ASM   05/29/84
  3. ;  Subroutine called by a C-basic program to scroll a window.
  4. ;
  5.     TITLE    CLR
  6.     NAME    CLR
  7. CGROUP    GROUP    CODESEG
  8. ;
  9. CODESEG SEGMENT PARA PUBLIC 'CODE'
  10.     ASSUME    CS:CGROUP,DS:CGROUP
  11.     PUBLIC    CLR
  12. ;
  13. FUNCT    DW    0        ;function 1=6,0=7
  14. FG_COLR DW    0        ;forground color
  15. BG_COLR DW    0        ;backround color
  16. LINES    DW    0        ;number of lines to scroll or 0 for clear
  17. ULROW    DW    0        ;upper left row
  18. ULCOL    DW    0        ;upper left column
  19. LRROW    DW    0        ;lower right row
  20. LRCOL    DW    0        ;lower left column
  21. ATTRIB    DB    0        ;temp hold for attribute byte
  22. CALNU    DB    0        ;temp hold for call function 6 or 7
  23. ;
  24. ;
  25. ; ****************************    CLEAR SCREEN ************************
  26. ;
  27. CLR    PROC    NEAR
  28.     PUSH    BP        ;BP unknown (don't care)
  29.     MOV    BP,SP        ;set base for parm list
  30.     PUSH    DS        ;DS -> basic work area
  31.     PUSH    ES        ;ES -> basic work area
  32. ;
  33. ;
  34.     MOV    AX,SS:[BP+4]   ;get addr of parameter
  35. ;    MOV    AX,ES:[SI]    ;get value of parm
  36.     MOV    FUNCT,AX
  37.     MOV    AX,SS:[BP+6]   ;get addr of parameter
  38. ;    MOV    AX,ES:[SI]    ;get value of parm
  39.     MOV    BG_COLR,AX
  40.     MOV    AX,SS:[BP+8]    ;get addr of parameter
  41. ;    MOV    AX,ES:[SI]    ;get value of parm
  42.     MOV    FG_COLR,AX
  43.     MOV    AX,SS:[BP+10]    ;get addr of parameter
  44. ;    MOV    AX,ES:[SI]    ;get value of parm
  45.     MOV    LINES,AX
  46.     MOV    AX,SS:[BP+12]    ;get addr of parameter
  47. ;    MOV    AX,ES:[SI]    ;get value of parm
  48.     MOV    ULROW,AX
  49.     MOV    AX,SS:[BP+14]    ;get addr of parameter
  50. ;    MOV    AX,ES:[SI]    ;get value of parm
  51.     MOV    ULCOL,AX
  52.     MOV    AX,SS:[BP+16]     ;get addr of parameter
  53. ;    MOV    AX,ES:[SI]    ;get value of parm
  54.     MOV    LRROW,AX
  55.     MOV    AX,SS:[BP+18]     ;get addr of parameter
  56. ;    MOV    AX,ES:[SI]    ;get value of parm
  57.     MOV    LRCOL,AX
  58. ;
  59.     MOV    AX,1
  60.     SUB    LRROW,AX    ;convert 1-80 cols
  61.     SUB    LRCOL,AX    ; and 1-25 rows into
  62.     SUB    ULROW,AX    ; 0-79 cols and
  63.     SUB    ULCOL,AX    ; 0-24 rows
  64. ;
  65. ;  change forground & backround colors into single attribute byte
  66. ;
  67.     MOV    BX,FG_COLR    ;move foreground color to bx
  68.     MOV    AL,BL        ;move lower byte to al
  69.     MOV    BX,BG_COLR    ;move backround color to bx
  70.     MOV    AH,BL        ;move lower byte to ah
  71.     CMP    AL,15        ;check for color > 15 ie blinking
  72.     JG    BLNK        ;if > 15 then set blink bit
  73.     AND    AL,15        ;set normal fg color
  74.     JMP    N_BLNK        ;
  75. BLNK:    OR    AL,128        ;set blink bit 7
  76.     AND    AL,143        ;zero out bit 6,5,4 used for backround
  77. N_BLNK: AND    AH,7        ;zero out bit 7,6,5,4,3 used for forground
  78.     MOV    CL,4        ;4 bit shift count
  79.     SHL    AH,CL        ;shift right 3 bits to pos 6,5,4
  80.     OR    AL,AH        ;combine for & back to form attribute byte
  81.     MOV    ATTRIB,AL    ;move it to STORAGE
  82.  
  83. ;
  84. ;   convert 1 and 0 to 6 and 7 for routine call
  85. ;
  86.     MOV    BX,FUNCT    ;move function into bx
  87.     CMP    BL,0        ;compare to one
  88.     JG    F6        ;if 1 then function is 6
  89.     MOV    AH,7H        ;set function 7
  90.     JMP    OUT1        ;jump around
  91. F6:    MOV    AH,6H        ;set function 6
  92. OUT1:    MOV    CALNU,AH    ;move it to storage
  93. ;
  94. ;
  95. ;  set up for bios rom call 10 function 6 (scroll up )
  96. ;
  97.     PUSH    BX
  98.     MOV    BX,LINES    ;set # of lines to scroll or 0 to clear
  99.     MOV    AL,BL        ;put in pass register
  100.     MOV    BX,ULROW    ;set upper left row of block 0-24
  101.     MOV    CH,BL        ;put in pass register
  102.     MOV    BX,ULCOL    ;set upper left column of block 0-79
  103.     MOV    CL,BL        ;put in pass register
  104.     MOV    BX,LRROW    ;set lower right row of block 0-24
  105.     MOV    DH,BL        ;put in pass register
  106.     MOV    BX,LRCOL    ;set lower right column of block 0-79
  107.     MOV    DL,BL        ;put in pass register
  108.     MOV    BL,CALNU    ;set call number 6 to scroll up 7 down
  109.     MOV    AH,BL        ;put in pass register
  110.     MOV    BL,ATTRIB    ;set color attribute byte
  111.     MOV    BH,BL        ;put in pass register
  112.     INT    10H        ; make bios call
  113.     POP    BX
  114. ;
  115. FINSH2: POP    ES
  116.     POP    DS
  117.     POP    BP
  118.     RET    16        ;return to basic
  119. CLR    ENDP
  120. CODESEG ENDS
  121.     END
  122.