home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol058 / macros.sqc / MACROS.SRC
Text File  |  1985-02-09  |  9KB  |  420 lines

  1. ;       EQUATES
  2.  
  3. PERCUSSION EQU  TRUE
  4.  
  5. SPACE   EQU     20H
  6. UP      EQU     '<'
  7. DOWN    EQU     '>'
  8. FLT     EQU     21H
  9. ESCAPE  EQU     1BH
  10. DOLLAR  EQU     24H
  11.  
  12. ;       MACROS
  13.  
  14. MOVE    MACRO   X,Y             ;; X := Y
  15.         LDA     Y
  16.         STA     X
  17.         ENDM
  18.  
  19. MOVI    MACRO   X,Y             ;; X := Y
  20.         MVI     A,Y
  21.         STA     X
  22.         ENDM
  23.  
  24. MINC    MACRO   X               ;; X := X + 1
  25.         LDA     X
  26.         INR     A
  27.         STA     X
  28.         ENDM
  29.  
  30. MDEC    MACRO   X               ;; X := X - 1
  31.         LDA     X
  32.         DCR     A
  33.         STA     X
  34.         ENDM
  35.  
  36. MADD    MACRO   X,Y,W           ;; X:=Y+W
  37.         LDA     W
  38.         MOV     B,A
  39.         LDA     Y
  40.         ADD     B
  41.         STA     X
  42.         ENDM
  43.  
  44. MADI    MACRO   X,Y,W           ;; X:=Y+W
  45.         LDA     Y
  46.         ADI     W
  47.         STA     X
  48.         ENDM
  49.  
  50. MSUB    MACRO   X,Y,W           ;; X:=Y-W
  51.         LDA     W
  52.         MOV     B,A
  53.         LDA     Y
  54.         SUB     B
  55.         STA     X
  56.         ENDM
  57.  
  58. MCP     MACRO   X,Y             ;; X : Y
  59.         LDA     Y
  60.         MOV     B,A
  61.         LDA     X
  62.         CMP     B
  63.         ENDM
  64.  
  65. MCPI    MACRO   X,Y             ;; X : Y
  66.         LDA     X
  67.         CPI     Y
  68.         ENDM
  69.  
  70. MIF     MACRO   X,Y,W           ;; IF (B) = X THEN Y
  71.         LDA     X               ;; (THEN GOTO W)
  72.         CMP     B
  73.         JNZ     $+9
  74.         CALL    Y
  75.         JMP     W
  76.         ENDM
  77.  
  78. MIFI    MACRO   X,Y,W           ;; IF (B) = X THEN Y
  79.         MVI     A,X             ;; (THEN GOTO W)
  80.         CMP     B
  81.         JNZ     $+9
  82.         CALL    Y
  83.         JMP     W
  84.         ENDM
  85.  
  86. DMOV    MACRO   X,Y             ;; X := Y
  87.         LHLD    Y
  88.         SHLD    X
  89.         ENDM
  90.  
  91. DMVI    MACRO   X,Y             ;; X := Y
  92.         LXI     H,Y
  93.         SHLD    X
  94.         ENDM
  95.  
  96. DINC    MACRO   X               ;; X := X + 1
  97.         LHLD    X
  98.         INX     H
  99.         SHLD    X
  100.         ENDM
  101.  
  102. DDEC    MACRO   X               ;; X := X - 1
  103.         LHLD    X
  104.         DCX     H
  105.         SHLD    X
  106.         ENDM
  107.  
  108. DADD    MACRO   X,Y,W           ;; X:=Y+W
  109.         LHLD    W
  110.         XCHG
  111.         LHLD    Y
  112.         DAD     D
  113.         SHLD    X
  114.         ENDM
  115.  
  116. DADI    MACRO   X,Y,W           ;; X:=Y+W
  117.         LHLD    Y
  118.         LXI     D,W
  119.         DAD     D
  120.         SHLD    X
  121.         ENDM
  122.  
  123. DSUB    MACRO   X,Y,W           ;; X:=Y-W
  124.         LHLD    W
  125.         XCHG
  126.         LHLD    Y
  127.         MOV     A,L
  128.         SUB     E
  129.         MOV     L,A
  130.         MOV     A,H
  131.         SBB     D
  132.         MOV     H,A
  133.         SHLD    X
  134.         ENDM
  135.  
  136. DMUL    MACRO   X,Y,W           ;; X:=Y*W
  137.         LHLD    W
  138.         XCHG
  139.         LHLD    Y
  140.         CALL    MULTIPLY
  141.         SHLD    X
  142.         ENDM
  143.  
  144. DMLI    MACRO   X,Y,W           ;; X:=Y*W
  145.         LHLD    Y
  146.         LXI     D,W
  147.         CALL    MULTIPLY
  148.         SHLD    X
  149.         ENDM
  150.  
  151. DDIV    MACRO   X,Y,W           ;; X:=Y/W
  152.         LHLD    W
  153.         MOV     B,H
  154.         MOV     C,L
  155.         LHLD    Y
  156.         XCHG
  157.         LXI     H,0
  158.         CALL    DIVIDE
  159.         XCHG
  160.         SHLD    X
  161.         ENDM
  162.  
  163. DCP     MACRO   X,Y             ;; X : Y
  164.         LHLD    Y
  165.         XCHG
  166.         LHLD    X
  167.         CALL    CPHLDE
  168.         ENDM
  169.  
  170. DCPI    MACRO   X,Y             ;; X:Y
  171.         LHLD    X
  172.         LXI     D,Y
  173.         CALL    CPHLDE
  174.         ENDM
  175.  
  176. FPUSH   MACRO   X               ;; STACK:=FP
  177.         LHLD    X+2
  178.         PUSH    H
  179.         LHLD    X
  180.         PUSH    H
  181.         ENDM
  182.  
  183. FPOP    MACRO   X               ;; FP:=STACK
  184.         POP     H
  185.         SHLD    X
  186.         POP     H
  187.         SHLD    X+2
  188.         ENDM
  189.  
  190. FMOV    MACRO   X,Y             ;; X:=Y
  191.         DMOV    X,Y
  192.         DMOV    X+2,Y+2
  193.         ENDM
  194.  
  195. FADD    MACRO   X,Y,W           ;; X:=Y+W
  196.         FPUSH   Y
  197.         FPUSH   W
  198.         CALL    FPFADD
  199.         FPOP    X
  200.         ENDM
  201.  
  202. FSUB    MACRO   X,Y,W           ;; X:=Y-W
  203.         FPUSH   Y
  204.         FPUSH   W
  205.         CALL    FPFSUB
  206.         FPOP    X
  207.         ENDM
  208.  
  209. FMUL    MACRO   X,Y,W           ;; X:=Y*W
  210.         FPUSH   Y
  211.         FPUSH   W
  212.         CALL    FPFMUL
  213.         FPOP    X
  214.         ENDM
  215.  
  216. FDIV    MACRO   X,Y,W           ;; X:=Y/W
  217.         FPUSH   Y
  218.         FPUSH   W
  219.         CALL    FPFDIV
  220.         FPOP    X
  221.         ENDM
  222.  
  223. STCP    MACRO   X,Y,W           ;; X:Y
  224.         LXI     H,Y             ;; STRING
  225.         LXI     D,X             ;; COMPARE
  226.         MVI     A,W
  227.         CALL    STCMP
  228.         ENDM
  229.  
  230. STRINT  MACRO   X,Y             ;; Y:=INT(X)
  231.         LXI     H,X
  232.         CALL    STR$TO$INT
  233.         SHLD    Y
  234.         ENDM
  235.  
  236. INTSTR  MACRO   X,Y,W           ;; Y:=STR(X)
  237.         LHLD    X
  238.         XCHG
  239.         LXI     H,Y
  240.         MVI     A,W
  241.         CALL    INT$TO$STR
  242.         ENDM
  243.  
  244. INTFLT  MACRO   X,Y             ;; Y:=FLOAT(X)
  245.         LHLD    X
  246.         PUSH    H
  247.         CALL    FPFFLOAT
  248.         FPOP    Y
  249.         ENDM
  250.  
  251. FLTINT  MACRO   X,Y             ;; Y:=TRUNC(X)
  252.         FPUSH   X
  253.         CALL    FPFFIX
  254.         POP     H
  255.         SHLD    Y
  256.         ENDM
  257.  
  258. XGET    MACRO   X,Y             ;; A:=X[Y]
  259.         LXI     D,X
  260.         LHLD    Y
  261.         DAD     D
  262.         MOV     A,M
  263.         ENDM
  264.  
  265. XPUT    MACRO   X,Y             ;; X[Y]:=A
  266.         LXI     D,X
  267.         LHLD    Y
  268.         DAD     D
  269.         MOV     M,A
  270.         ENDM
  271.  
  272. FCHI    MACRO   X,Y,W           ;; FILLCHAR(X,Y,W)
  273.         LXI     H,X
  274.         MVI     A,W
  275.         MVI     B,Y
  276.         CALL    FILL$CHAR
  277.         ENDM
  278.  
  279. FCHR    MACRO   X,Y,W
  280.         LXI     H,X
  281.         LDA     Y
  282.         MOV     B,A
  283.         MVI     A,W
  284.         CALL    FILL$CHAR
  285.         ENDM
  286.         
  287. LMVI    MACRO   X,Y,W           ;; MOVELEFT(X,Y,W)
  288.         LXI     H,X
  289.         LXI     D,Y
  290.         MVI     A,W
  291.         CALL    MOVELEFT
  292.         ENDM
  293.  
  294. LMOV    MACRO   X,Y,W
  295.         LXI     H,X
  296.         LXI     D,Y
  297.         LDA     W
  298.         CALL    MOVELEFT
  299.         ENDM
  300.  
  301. NEXT    MACRO   X,Y,W           ;; FOR..NEXT
  302.         DCP     Y,W
  303.         JP      $+10
  304.         INX     H
  305.         SHLD    Y
  306.         JMP     X
  307.         ENDM
  308.  
  309. NXTI    MACRO   X,Y,W           ;; FOR..NEXT
  310.         DCPI    Y,W
  311.         JP      $+10
  312.         INX     H
  313.         SHLD    Y
  314.         JMP     X
  315.         ENDM
  316.  
  317. RESET   MACRO   F,X,L,M,N       ;; RESET(F,X)
  318.         LXI     D,F
  319.         LXI     H,X
  320.         CALL    FFCB
  321.         IF      NOT TRS80
  322.         MOVI    F+9,L
  323.         MOVI    F+10,M
  324.         MOVI    F+11,N
  325.         ENDIF
  326.         LXI     D,F
  327.         CALL    FRESET
  328.         ENDM
  329.  
  330. REWRT   MACRO   F,X,L,M,N       ;; REWRITE(F,X)
  331.         LXI     D,F
  332.         LXI     H,X
  333.         CALL    FFCB
  334.         IF      NOT TRS80
  335.         MOVI    F+9,L
  336.         MOVI    F+10,M
  337.         MOVI    F+11,N
  338.         ENDIF
  339.         LXI     D,F
  340.         CALL    FREWRT
  341.         ENDM
  342.  
  343. CLOSE   MACRO   F               ;; CLOSE(F,LOCK)
  344.         LXI     D,F
  345.         CALL    FCLOS
  346.         ENDM
  347.  
  348. DELETE  MACRO   F,X,L,M,N       ;; DELETE(F,X)
  349.         LXI     D,F
  350.         LXI     H,X
  351.         CALL    FFCB
  352.         IF      NOT TRS80
  353.         MOVI    F+9,L
  354.         MOVI    F+10,M
  355.         MOVI    F+11,N
  356.         ENDIF
  357.         LXI     D,F
  358.         CALL    FDELE
  359.         ENDM
  360.  
  361. GTCH    MACRO   X               ;; READ(X)
  362.         CALL    FGTCH           ;; NO ECHO
  363.         STA     X
  364.         ENDM
  365.  
  366. READ    MACRO   X               ;; READ(X)
  367.         CALL    FRDCH           ;; W/ ECHO
  368.         STA     X
  369.         ENDM
  370.  
  371. READF   MACRO   F,X             ;; READ(F,X)
  372.         LXI     D,F
  373.         CALL    FREAD
  374.         STA     X
  375.         ENDM
  376.  
  377. REDLN   MACRO   X,Y             ;; READ(X,Y)
  378.         LXI     H,X             ;; X=@(BUFFER)
  379.         MVI     A,Y             ;; Y=S(BUFFER)
  380.         CALL    FRDLN
  381.         ENDM
  382.  
  383. WRITE   MACRO   X               ;; WRITE(X)
  384.         LDA     X
  385.         CALL    FWTCH
  386.         ENDM
  387.  
  388. WRITF   MACRO   F,X             ;; WRITE(F,X)
  389.         LXI     D,F
  390.         LDA     X
  391.         CALL    FWRIT
  392.         ENDM
  393.  
  394. WRTFI   MACRO   F,X
  395.         LXI     D,F
  396.         MVI     A,X
  397.         CALL    FWRIT
  398.         ENDM
  399.  
  400. SWRT    MACRO   F,X             ;; WRITE(F,X)
  401.         LXI     D,F             ;; STRING
  402.         LXI     H,X             ;; WRITE
  403.         CALL    SWRITE
  404.         ENDM
  405.  
  406. WRTLN   MACRO   X               ;; WRITELN(X)
  407.         LXI     H,X
  408.         CALL    FWRTLN
  409.         ENDM
  410.  
  411. GTXY    MACRO   X,Y             ;; GOTOXY(X,Y)
  412.         MVI     B,X
  413.         MVI     A,Y
  414.         CALL    GOTOXY
  415.         ENDM
  416.  
  417.  
  418.  
  419.  
  420.