home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 04 / tricks / cheapcrt.asm next >
Assembly Source File  |  1991-01-08  |  3KB  |  212 lines

  1. ;* ------------------------------------------------------- *
  2. ;*                    CHEAPCRT.ASM                         *
  3. ;*       (c) 1989 Hanno-Ekkehard Müller & TOOLBOX          *
  4. ;* ------------------------------------------------------- *
  5. TITLE "Cheap" CRT Library
  6.  
  7. DATA   Segment Word Public
  8. ASSUME ds:DATA
  9. DATA   ends
  10.  
  11. CODE   Segment Byte Public
  12.  
  13. ASSUME cs:CODE
  14.  
  15. PUBLIC TextMode
  16. PUBLIC GotoXY
  17. PUBLIC WhereX
  18. PUBLIC WhereY
  19. PUBLIC ClrScr
  20. PUBLIC KeyPressed
  21. PUBLIC ReadKey
  22. PUBLIC Sound
  23. PUBLIC NoSound
  24.  
  25.  
  26. TextMode PROC FAR
  27.  
  28.        Mode EQU BYTE PTR [bp+4]
  29.  
  30.        MOV  cx,bp
  31.        MOV  bp,sp
  32.        XOR  ax,ax
  33.        MOV  al,Mode
  34.        INT  10h
  35.        MOV  bp,cx
  36.        RET  2
  37.  
  38. TextMode ENDP
  39.  
  40.  
  41. GotoXY PROC FAR
  42.  
  43.        X EQU BYTE PTR [bp+6]
  44.        Y EQU BYTE PTR [bp+4]
  45.  
  46.        MOV  cx,bp
  47.        MOV  bp,sp
  48.        MOV  ah,02h
  49.        XOR  bx,bx
  50.        MOV  dl,X
  51.        DEC  dl
  52.        MOV  dh,Y
  53.        DEC  dh
  54.        INT  10h
  55.        MOV  bp,cx
  56.        RET  4
  57.  
  58. GotoXY ENDP
  59.  
  60.  
  61. WhereX PROC FAR
  62.  
  63.        MOV  ah,03h
  64.        XOR  bx,bx
  65.        INT  10h
  66.        MOV  al,dl
  67.        INC  al
  68.        RET
  69.  
  70. WhereX ENDP
  71.  
  72.  
  73. WhereY PROC FAR
  74.  
  75.        MOV  ah,03h
  76.        XOR  bx,bx
  77.        INT  10h
  78.        MOV  al,dh
  79.        INC  al
  80.        RET
  81.  
  82. WhereY ENDP
  83.  
  84.  
  85. ClrScr PROC FAR
  86.  
  87.        MOV  ah,0fh
  88.        INT  10h
  89.        XOR  ah,ah
  90.        INT  10h
  91.        RET
  92.  
  93. ClrScr ENDP
  94.  
  95.  
  96. WaitExtended db 0
  97. ExtendedCode db 0
  98.  
  99.  
  100. KeyPressed PROC FAR
  101.  
  102.        MOV  al,[WaitExtended]
  103.        OR   al,al
  104.  
  105.        JNZ  KeyIsPressed
  106.  
  107.        MOV  ax,0100h
  108.        INT  16h
  109.        JNZ  KeyIsPressed
  110.  
  111.        XOR  ax,ax
  112.        RET
  113.  
  114. KeyIsPressed:
  115.  
  116.        MOV  ax,1
  117.        RET
  118.  
  119. KeyPressed ENDP
  120.  
  121.  
  122. ReadKey PROC FAR
  123.  
  124.        MOV  al,[WaitExtended]
  125.        OR   al,al
  126.  
  127.        JZ   NoWait
  128.  
  129.        XOR  ax,ax
  130.        MOV  [WaitExtended],al
  131.        MOV  al,ExtendedCode
  132.        RET
  133.  
  134. NoWait:
  135.  
  136.        XOR  ax,ax
  137.        INT  16h
  138.  
  139.        OR   al,al
  140.  
  141.        JNZ  EndJump
  142.  
  143.        MOV  [WaitExtended],1
  144.        MOV  [ExtendedCode],ah
  145.  
  146. EndJump:
  147.  
  148.        RET
  149.  
  150. ReadKey ENDP
  151.  
  152.  
  153. Sound PROC FAR
  154.  
  155.        Hertz EQU WORD PTR [bp+4]
  156.  
  157.        MOV  cx,bp
  158.        MOV  bp,sp
  159.  
  160.        MOV  dx,12h
  161.        MOV  ax,34ddh
  162.        MOV  bx,Hertz
  163.  
  164.        CMP  bx,dx
  165.        JB   DivisionByZero
  166.  
  167.        DIV  bx
  168.  
  169.        MOV  bx,ax
  170.  
  171.        IN   al,61h
  172.        TEST al,00000011b
  173.  
  174.        JNZ  SoundActive
  175.  
  176.        OR   al,00000011b
  177.        OUT  61h,al
  178.        MOV  al,182
  179.        OUT  43h,al
  180.  
  181. SoundActive:
  182.  
  183.        MOV  ax,bx
  184.        OUT  42h,al
  185.        MOV  al,ah
  186.        OUT  42h,al
  187.  
  188.        MOV  bp,cx
  189.  
  190. DivisionByZero:
  191.  
  192.        RET 2
  193.  
  194. Sound ENDP
  195.  
  196.  
  197. NoSound PROC FAR
  198.  
  199.        IN   al,61h
  200.        AND  al,11111100b
  201.        OUT  61h,al
  202.        RET
  203.  
  204. NoSound ENDP
  205.  
  206.  
  207. CODE   ENDS
  208.  
  209. END
  210. ;* ------------------------------------------------------- *
  211. ;*                 Ende von CHEAPCRT.ASM                   *
  212.