home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol007 / tpa3.asm < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  101 lines

  1. ;
  2. ;    this program returns the amount
  3. ;    of free space in the tpa.
  4. ;    this can be useful when running under
  5. ;    fast, despool, ddt, sid, etc.
  6. ;
  7. ;    version of 8/30/80
  8. ;
  9. ;
  10. ;    by Ron Fowler    
  11. ;       Westland, Mich.
  12. ;       8/24/80
  13. ;
  14. ;       fixes and code optimizations by
  15. ;       Keith Petersen
  16. ;
  17.     org    100h
  18. ;
  19. base:    lxi    h,0
  20.     dad    sp    ;get local stack
  21.     lxi    sp,stack
  22.     push    h    ;save old stack
  23.     lhld    6    ;get the top of memory
  24.     xchg        ;put it in de
  25.     push    d    ;save it for later
  26.     lxi    h,-100h ;get the start of mem
  27.     dad    d    ;subtract it, answer left in hl
  28.     call    decout    ;print it
  29.     call    tb1    ;print the rest of line
  30.     db    ' bytes total tpa space.',13,10,'$'
  31. ;
  32. tb1:    mvi    c,9    ;print msg function
  33.     pop    d    ;get msg adrs
  34.     call    5    ;print it
  35.     pop    d    ;get top of memory back
  36.     lxi    H,-(800h+100h) ;ccp size + tpa
  37.     dad    d    ;subtract it, answer left in hl
  38.     call    decout    ;print it
  39.     call    tb2    ;print rest of line
  40.     db    ' bytes before overlaying the ccp.',13,10,'$'
  41. ;
  42. tb2:    mvi    c,9    ;print msg function
  43.     pop    d    ;get msg adrs
  44.     call    5    ;print it
  45.     pop    h    ;restore ccp stack
  46.     sphl
  47.     ret        ;back to the ccp
  48. ;
  49. ;    subroutines
  50. ;
  51. ; Console output routine
  52. ;    prints character in 'a' register
  53. ;
  54. co:    push    h
  55.     push    d
  56.     push    b
  57.     mov    e,a    ;character to e for CP/M
  58.     mvi    c,2    ;print console function
  59.     call    5    ;print character
  60.     pop    b
  61.     pop    d
  62.     pop    h
  63.     ret
  64. ;
  65. ; Decimal output routine
  66. ;    this routine has following
  67. ;    entry and external parameters:
  68. ;
  69. ;       entry:    hl=binary number to print in decimal
  70. ;       external calls: co routine
  71. ;       ** note...this routine is recursive, and uses
  72. ;       6 bytes of stack for each recursive call, in ad-
  73. ;       dition to any stack space used by the co routine.
  74. ;
  75. decout: push    b
  76.     push    d
  77.     push    h
  78.     lxi    b,-10
  79.     lxi    d,-1
  80. ;
  81. decou2: dad    b
  82.     inx    d
  83.     jc    decou2
  84.     lxi    b,10
  85.     dad    b
  86.     xchg
  87.     mov    a,h
  88.     ora    l
  89.     cnz    decout
  90.     mov    a,e
  91.     adi    '0'
  92.     call    co
  93.     pop    h
  94.     pop    d
  95.     pop    b
  96.     ret
  97. ;
  98. stack    equ    $+80    ;40 level stack
  99. ;
  100.     end
  101.