home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / asm_kit / subz.asm < prev    next >
Assembly Source File  |  1985-06-21  |  5KB  |  146 lines

  1. TITLE SCREEN HANDLING
  2. COMMENT *
  3.                 TERMINATE       *
  4. SUBTTL DEFINITIONS OF MACROS
  5. UP            MACRO
  6.               MOV     AH,6H           ;AH=6 Requests scroll UP
  7.               BIOSCALL                ;Invoke BIOS to scroll the window
  8.               ENDM
  9. ;
  10. DOWN          MACRO
  11.               MOV     AH,7H           ;AH=7 Requests scroll DOWN
  12.               BIOSCALL                ;Invoke BIOS to scroll the window
  13.               ENDM
  14. ;
  15. READ_CURSOR   MACRO
  16.               MOV     BH,AL
  17.               MOV     AH,3            ;Functoin Selected Read Cursor Position
  18.               BIOSCALL                ;Invoke BIOS to scroll the window
  19.               ENDM
  20. ;
  21. SET_CURSOR    MACRO
  22.               MOV     AH,2            ;Function selected = locate
  23.               BIOSCALL                ;Invoke BIOS to move cursor
  24.               ENDM
  25. ;
  26. BIOSCALL      MACRO
  27.               INT     10H             ;Request BIOS service, id in AH
  28.               ENDM
  29. SUBTTL DESCRIPTION OF THE STACK SEGMENT
  30. ;
  31. STACK         SEGMENT PARA STACK 'STACK'
  32. ;
  33.               DB      64 DUP('STACK   ')
  34. STACK         ENDS
  35. ;
  36. ;***************************************************************
  37. ;
  38. SUBTTL DESCRIPTION OF DOS INTERFACES
  39. ;
  40. CSEG          SEGMENT PARA PUBLIC 'CODE'
  41.               PUBLIC LDELETE,LINSERT,PFILL
  42. ;
  43. LDELETE       PROC    FAR
  44.         ASSUME CS:CSEG,SS:STACK,ES:NOTHING
  45. ;
  46. SUBTTL ESTABLISH ENTRY FROM BASIC
  47. ;
  48.               PUSH    BP              ;save calling program BP
  49.               MOV     BP,SP           ;establish new BP
  50. ;
  51. SUBTTL SET THE ACTIVE PAGE
  52. ;
  53.               MOV     SI,[BP]+6
  54.               MOV     AX,[SI]
  55. ;
  56. SUBTTL SCROLL THE WINDOW FROM CURSOR POSITION
  57. ;
  58.               READ_CURSOR             ;read cursor position
  59.               MOV     CH,DH           ;row position
  60.               MOV     CL,DL           ;column postion
  61.               MOV     AL,1            ;number of lines to insert
  62.               CALL    SCROLL_UP       ;Call the scroll up routine
  63. ;
  64. SUBTTL RESTORE THE ENTRY CONDITIONS, RETURN TO BASIC
  65. ;
  66.               POP     BP              ;Restore BP register
  67.               RET     2               ;Far return to BASIC
  68. ;
  69. LDELETE      ENDP
  70. ;
  71. ;
  72. ;
  73. LINSERT      PROC    FAR
  74. ;
  75. SUBTTL  ESTABLISH ENTRY BASIC
  76. ;
  77.               PUSH    BP              ;save calling program BP
  78.               MOV     BP,SP           ;establish new BP
  79. ;
  80. SUBTTL SET THE ACTIVE PAGE
  81. ;
  82.               MOV     SI,[BP]+6
  83.               MOV     AX,[SI]
  84. ;
  85. SUBTTL SCROLL THE WINDOW FROM CURSOR POSITION
  86. ;
  87.               READ_CURSOR             ;read cursor position
  88.               MOV     CH,DH           ;row position
  89.               MOV     CL,DL           ;column postion
  90.               MOV     AL,1            ;number of lines to insert
  91.               CALL    SCROLL_DOWN     ;Call scroll down routine
  92. ;
  93. SUBTTL RESTORE THE ENTRY CONDITIONS, RETURN TO BASIC
  94. ;
  95.               POP     BP              ;Restore BP register
  96.               RET     2               ;Far return to BASIC
  97. ;
  98. LINSERT       ENDP
  99. ;
  100. ;---------------------------------------------------------------
  101. ;
  102. PFILL         PROC    FAR
  103. ;
  104. SUBTTL ESTABLISH ENTRY FROM BASIC
  105. ;
  106.               PUSH    BP              ;save calling program BP
  107.               MOV     BP,SP           ;establish new BP
  108. ;
  109. SUBTTL GET ADDRESSES FOR VARIABLES PASSED FROM BASIC
  110. ;
  111.               MOV     SI,[BP]+6
  112.               MOV     AX,[SI]         ;CHARACTER [AL]
  113.               MOV     SI,[BP]+8
  114.               MOV     BX,[SI]         ;PAGE [BH]/ATTRIBUTE [BL]
  115.               MOV     SI,[BP]+10
  116.               MOV     CX,[SI]         ;COUNT [CX]
  117. ;
  118. SUBTTL FILL FROM CURSOR TO BOTTOM OF SCREEN
  119. ;
  120.               MOV     AH,9
  121.               BIOSCALL
  122. ;
  123. SUBTTL RESTORE THE ENTRY CONDITIONS, RETURN TO BASIC
  124. ;
  125.               POP     BP              ;Restore BP register
  126.               RET     6               ;Far return to BASIC
  127. ;
  128. PFILL        ENDP
  129. SUBTTL ************* COMMON CODE LOCAL SUBROUTINES ****************
  130. ;
  131. SCROLL_UP     PROC    NEAR
  132.               MOV     DX,174FH
  133.               MOV     BH,7            ;Normal attribute for Insert
  134.               UP                      ;Scroll up, insert at bottom
  135.               RET                     ;Return to caller
  136. SCROLL_UP     ENDP
  137. ;
  138. SCROLL_DOWN   PROC    NEAR
  139.               MOV     DX,174FH
  140.               MOV     BH,7            ;Normal attribute for Insert
  141.               DOWN                    ;Scroll down, insert at top
  142.               RET                     ;Return to caller
  143. SCROLL_DOWN   ENDP
  144. CSEG          ENDS
  145.               END     LDELETE
  146.