home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / 22rsx / 22rsx-20.ark / 22INSTB.ASM < prev    next >
Assembly Source File  |  1984-10-13  |  2KB  |  139 lines

  1. ;
  2. ;Program name: 22INSTB.ASM
  3. ;Author      : James Whorton
  4. ;Date written: 10/13/84
  5. ;
  6. ;This is the link file that comes after the RSX module to be
  7. ;installed. This file will be linked automatically by LASM when
  8. ;assembling 22INSTA.ASM. Note: The RSX module must have a
  9. ;
  10. ;    link    '22INSTB'
  11. ;
  12. ;as the last line of the code to work properly. See .DOC for details.
  13. ;
  14. endobj:    equ    $        ;this marks the end of the code.
  15. ;
  16. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  17. ;
  18. ;===============================================================
  19. ;
  20. pend:    equ    $        ;this marks the end of the module
  21.                 ;to be moved.
  22. ;
  23. ;inline print routine
  24. ;
  25. ilprt:    equ    $
  26.     push    psw
  27.     push    h
  28.     push    d
  29.     push    b
  30. ;
  31. ilplp:    mov    e,m
  32.     mvi    c,cout
  33.     push    h
  34. ilplp1:    call    bdos
  35.     pop    h
  36.     inx    h
  37.     mov    a,m
  38.     ora    a
  39.     jnz    ilplp
  40.     pop    b
  41.     pop    d
  42.     pop    h
  43.     pop    psw
  44.     ret
  45. ;
  46. ;this routine outputs the address in <hl> in hex format
  47. ;
  48. outhl:    push    h    ;save pointer
  49.     mov    a,h    ;get MSB
  50.     call    hex1    ;print MSB
  51.     pop    h    ;get pointer
  52.     push    h
  53.     mov    a,l    ;get LSB
  54.     call    hex1
  55.     call    makhex
  56.     pop    h
  57.     ret
  58. ;
  59. ;this routine outputs the bytes referenced by <hl>
  60. ;
  61. outmem:    push    h    ;save pointer
  62.     inx    h    ;bump one
  63.     mov    a,m    ;get byte
  64.     call    hex1
  65.     pop    h
  66.     push    h
  67.     mov    a,m
  68.     call    hex1
  69.     call    makhex
  70.     pop    h
  71.     ret
  72. hex1:    mov    b,a    ;save number
  73.     rar
  74.     rar
  75.     rar
  76.     rar
  77.     call    hex2    ;print half of it
  78.     mov    a,b    ;get number back
  79. hex2:    ani    0Fh    ;get LSN to send out
  80.     adi    090h    ;convert to ASCII
  81.     daa
  82.     aci    040h
  83.     daa
  84.     push    b
  85.     mvi    c,cout
  86.     mov    e,a
  87.     call    bdos
  88.     pop    b
  89.     ret
  90. ;
  91. ;put an H on hex address and start new line
  92. ;
  93. makhex:    mvi    e,'h'
  94.     mvi    c,cout
  95.     call    bdos
  96.     ret
  97. ;
  98. ;this routine moves <hl> to <de> for length <b>
  99. ;
  100. move:    mov    a,m
  101.     stax    d
  102.     inx    d
  103.     inx    h
  104.     dcr    b
  105.     jnz    move
  106.     ret            ;done
  107. ;
  108. ;this routine compares bytes at <hl> and <de> for <b> bytes.
  109. ;
  110. compar:    ldax    d
  111.     cmp    m
  112.     rnz
  113.     inx    h
  114.     inx    d
  115.     dcr    b
  116.     jnz    compar
  117.     ret
  118. ;
  119. ;this routine subtracts <de> from <hl> and leaves the results in <hl>
  120. ;
  121. sbc:    mov    a,l
  122.     sub    e
  123.     mov    l,a
  124.     mov    a,h
  125.     sbb    d
  126.     mov    h,a
  127.     ret
  128. ;
  129.     end
  130.                 
  131.  from <hl> and leaves the results in <hl>
  132. ;
  133. sbc:    mov    a,l
  134.     sub    e
  135.     mov    l,a
  136.     mov    a,h
  137.     sbb    d
  138.     mov    h,a
  139.