home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol134 / macro.src < prev    next >
Encoding:
Text File  |  1984-04-29  |  3.5 KB  |  142 lines

  1.  
  2.           **     **      *        ***   ****       ***
  3.            **   **      * *      *   *   *   *    *   *
  4.            * * * *     *   *    *        *   *   *     *
  5.            *  *  *    *******   *        ****    *     *
  6.            *     *    *     *    *   *   *   *    *   *
  7.           **     ** **       **   ***   **    **   ***
  8.  
  9. * A LIBRARY OF MACRO'S FOR 'INCLUDE'ING IN ASSEMBLY PROGRAMS
  10.  
  11. * ENSURE THAT MACRO'S ARE ONLY 'INCLUDE'D ONCE IN A PROGRAM
  12. *          E.G. WHEN CALLING SUBROUTINES
  13.  
  14. * ALSO ENSURE THAT THE SUBROUTINES REQUIRED ARE AVAILABLE 
  15.  
  16. * MACROS = RING_BELL         SUB/R's REQ'D = BEEP
  17. *          CLEAR_SCREEN                      CLRHOM
  18. *          PRINT
  19. *          CURSOR
  20. *          PASSBYT
  21. *          PASSWRD
  22. *          GETBYTE
  23. *       DUMP
  24. *       invert
  25.  
  26. RING_BELL:     MACRO
  27.                CALL BEEP
  28.                ENDMAC
  29.  
  30. CLEAR_SCREEN:  MACRO
  31.                CALL CLRHOM
  32.                ENDMAC
  33.  
  34. PRINT:         MACRO ARG1
  35.                PUSH PSW
  36.                PUSH H
  37.                PUSH B
  38.                PUSH D
  39.                LXI D,ARG1
  40.                MVI C,09H
  41.                CALL 5
  42.                POP D
  43.                POP B
  44.                POP H
  45.                POP PSW
  46.                ENDMAC
  47.  
  48.  
  49. CURSOR:        MACRO ACROSS,DOWN   ;ACROSS=HOR.ROW NO.
  50.                PUSH P              ;DOWN = VERT.COLUMN NO.
  51.                PUSH B
  52.                PUSH D
  53.                PUSH H
  54.                MVI E,1BH
  55.                MVI C,2
  56.                CALL 5
  57.                MVI E,3DH
  58.                MVI C,2
  59.                CALL 5
  60.                MVI E,ACROSS+31
  61.                MVI C,2
  62.                CALL 5
  63.                MVI E,DOWN+31
  64.                MVI C,2
  65.                CALL 5
  66.                POP H
  67.                POP D
  68.                POP B
  69.                POP P
  70.                ENDMAC
  71.  
  72.  
  73. *    PASSBYT STORES 'VALUE' AT THE MEMORY LOCATION,THE
  74. * MSB OF WHOSE ADDRESS IS FOUND AT THE MEMORY LOCATION
  75. * WHOSE ADDRESS = ('ADDRSS'+VALUE OF CONTENT OF IX).
  76.  
  77. PASSBYT: MACRO ADDRSS,VALUE  ;
  78.          PUSH H
  79.          MOV H,ADDRSS(IX)    ;MSB ADDRESS>H
  80.          MOV L,ADDRSS-1(IX)  ;LSB ADDRESS>L
  81.          MVI M,VALUE
  82.          POP H
  83.          ENDMAC
  84.  
  85. *     PASSWRD STORES THE 16 BIT NO. IN HL IN MEMORY.THE
  86. * MSB (IN H) IS STORED AT THE LOCATION,THE MSB OF WHOSE 
  87. * ADDRESS IS FOUND AT THE LOCATION WHOSE ADDRESS CAN BE
  88. * CALCULATED AS ('VARMSB'+VALUE OF CONTENTS OF IX).THE
  89. * LSB (IN L) IS STORED AT THE NEXT LOWEST LOCATION.
  90.  
  91. PASSWRD: MACRO VARMSB
  92.          PUSH D
  93.          PUSH P
  94.          MOV D,VARMSB(IX)    ;MSB ADDRESS OF MSB>D
  95.          MOV E,VARMSB-1(IX)  ;LSB    "    "   " >E
  96.          MOV A,H             ;MSB OF INTEGER>A
  97.          STAX D              ; "  "      "  >MEMORY
  98.          DCX D               ;POINT DE TO LSB
  99.          MOV A,L             ;LSB OF INTEGER>A
  100.          STAX D              ; "  "      "  >MEMORY
  101.          POP P
  102.          POP D
  103.          ENDMAC
  104.  
  105. *     GETBYTE GETS A BYTE VARIABLE PASSED BY REFERENCE FROM A
  106. * PASCAL/Z PROGRAM.THE MSB OF THE ADDRESS WHERE THE BYTE IS TO
  107. * BE FOUND , IS CALCULATED AS ( "ADDRSS" + VALUE IN IX ) .
  108. * THE LSB OF THE BYTE'S ADDRESS IS STORED AT THE NEXT LOWEST
  109. * MEMORY LOCATION.THE BYTE IS THEN PLACED IN REGISTER A.
  110.  
  111. GETBYTE: MACRO ADDRSS
  112.          PUSH H
  113.          MOV H,ADDRSS(IX)
  114.          MOV L,ADDRSS-1(IX)
  115.          MOV A,M
  116.          POP H
  117.          ENDMAC
  118.  
  119.  
  120. DUMP:        MACRO arg    : dumps the contents of a 16bit
  121.         push psw    : register to console
  122.         push b
  123.         push arg
  124.         push arg
  125.         pop b
  126.         mov a,b
  127.         call hexout
  128.         mov a,c
  129.         call hexout
  130.         pop arg
  131.         pop b
  132.         pop psw
  133.         ENDMAC
  134.  
  135. invert:        MACRO    arg
  136.         PUSH    P
  137.         MOV    A,arg
  138.         NEG
  139.         MOV    arg,A
  140.         POP    P
  141.         ENDMAC
  142.