home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / MACLIB / OPCODE.LQB / OPCODE.LIB
Text File  |  2000-06-30  |  2KB  |  157 lines

  1. ;
  2. ;        EXTENDED OPCODE LIBRARY
  3. ;
  4. ;
  5. ;REGISTER INDEXED ADDRESS
  6. RXAD    MACRO    REGPR,BSADD    ;(HL)<-REGPR+BSADD
  7.     LXI    H,BSADD
  8.     DAD    REGPR
  9.     ENDM
  10. ;
  11. ;REGISTER INDEXED LOAD
  12. RXLD    MACRO    REG,REGPR,BSADD    ;REG<-(REGPR+BSADD)
  13.     RXAD    REGPR,BSADD
  14.     MOV    REG,M
  15.     ENDM
  16. ;
  17. ;REGISTER INDEXED STORE
  18. RXST    MACRO    REG,REGPR,BSADD    ;(REGPR+BSADD)<-REG
  19.     RXAD    REGPR,BSADD
  20.     MOV    M,REG
  21.     ENDM
  22. ;
  23. ;REGISTER DIRECT LOAD
  24. RDLD    MACRO    REG,ADDR    ;REG<-(ADDR)
  25.     LXI    H,ADDR
  26.     MOV    REG,M
  27.     ENDM
  28. ;
  29. ;REGISTER DIRECT STORE
  30. RDST    MACRO    REG,ADDR
  31.     LXI    H,ADDR
  32.     MOV    M,REG
  33.     ENDM
  34. ;
  35. ;REGISTER INDIRECT LOAD
  36. LIND    MACRO    REG,ADDR    ;REG<-((ADDR))
  37.     LHLD    ADDR
  38.     MOV    REG,M
  39.     ENDM
  40. ;
  41. ;REGISTER STORE INDIRECT
  42. SIND    MACRO    REG,ADDR    ;((ADDR))<-REG
  43.     LHLD    ADDR
  44.     MOV    M,REG
  45.     ENDM
  46. ;
  47. ;ADD TO ACCUMULATOR INDIRECT
  48. ADDI    MACRO    ADDR    ;A<-A+((ADDR))
  49.     LHLD    ADDR
  50.     ADD    M
  51.     ENDM
  52. ;
  53. ;SUBTRACT FROM ACCUMULATOR INDIRECT
  54. SUBI    MACRO    ADDR    ;A<-A-((ADDR))
  55.     LHLD    ADDR
  56.     SUB    M
  57.     ENDM
  58. ;
  59. ;IF REG NOT 0, THEN JUMP TO LABEL
  60. JNZR    MACRO    REG,LABEL
  61.     XRA    A
  62.     CMP    REG
  63.     JNZ    LABEL
  64.     ENDM
  65. ;
  66. ;IF REG 0, THEN JUMP TO LABEL
  67. JZR    MACRO    REG,LABEL
  68.     CMP    REG
  69.     JZ    LABEL
  70.     ENDM
  71. ;
  72. ;(DE) STORED AT ADDRESS IN (HL)
  73. STDM    MACRO
  74.     MOV    M,E
  75.     INX    H
  76.     MOV    M,D
  77.     ENDM
  78. ;
  79. ;SAVE ALL REGISTERS
  80. SAVE    MACRO
  81.     PUSH    PSW
  82.     PUSH    B
  83.     PUSH    D
  84.     PUSH    H
  85.     ENDM
  86. ;
  87. ;RESTORE ALL REGISTERS
  88. UNSAVE    MACRO
  89.     POP    H
  90.     POP    D
  91.     POP    B
  92.     POP    PSW
  93.     ENDM
  94. ;
  95. ;MOVE 'C' BYTES FROM (HL) TO (DE)
  96. MOVE    MACRO    FROM,TO,NBYTES
  97.     LOCAL    MO1
  98.     MVI    C,NBYTES
  99.     LXI    H,FROM
  100.     LXI    D,TO
  101. MO1:    MOV    A,M
  102.     STAX    D
  103.     INX    H
  104.     INX    D
  105.     DCR    C
  106.     JNZ    MO1
  107.     ENDM
  108. ;
  109. ;FILL REGION FROM (HL) TO (DE) WITH CHAR
  110. FILL    MACRO    FROM,TO,CHAR
  111.     LOCAL    FI1
  112.     LXI    H,FROM
  113.     LXI    D,TO
  114. FI1:    MVI    A,CHAR
  115.     MOV    M,A
  116.     INX    H
  117.     MOV    A,L
  118.     CMP    E
  119.     JNZ    FI1
  120.     MOV    A,H
  121.     CMP    D
  122.     JNZ    FI1
  123.     ENDM
  124. ;
  125. ;SHIFT ACCUMULATOR 1 BIT TO RIGHT
  126. SHRT    MACRO
  127.     RRC
  128.     ANI    7FH
  129.     ENDM
  130. ;
  131. ;SHIFT ACCUMULATOR 1 BIT TO LEFT
  132. SHLT    MACRO
  133.     RLC
  134.     ANI    0FEH
  135.     ENDM
  136. ;
  137. ;SHIFT ACCUMULATOR RIGHT AMT BITS INDEXED IN REG
  138. SHRV    MACRO    REG,AMT
  139.     LOCAL    SH1
  140.     MVI    REG,AMT
  141. SH1:    RRC
  142.     ANI    7FH
  143.     DCR    REG
  144.     JNZ    SH1
  145.     ENDM
  146. ;
  147. ;SHIFT ACCUMULATOR LEFT AMT BITS INDEXED IN REG
  148. SHLV    MACRO    REG,AMT
  149.     LOCAL    SH1
  150.     MVI    REG,AMT
  151. SH1:    RLC
  152.     ANI    0FEH
  153.     DCR    REG
  154.     JNZ    SH1
  155.     ENDM
  156. ;
  157.