; ; this program returns the amount ; of free space in the tpa. ; this can be useful when running under ; fast, despool, ddt, sid, etc. ; ; version of 8/30/80 ; ; ; by Ron Fowler ; Westland, Mich. ; 8/24/80 ; ; fixes and code optimizations by ; Keith Petersen ; org 100h ; base: lxi h,0 dad sp ;get local stack lxi sp,stack push h ;save old stack lhld 6 ;get the top of memory xchg ;put it in de push d ;save it for later lxi h,-100h ;get the start of mem dad d ;subtract it, answer left in hl call decout ;print it call tb1 ;print the rest of line db ' bytes total tpa space.',13,10,'$' ; tb1: mvi c,9 ;print msg function pop d ;get msg adrs call 5 ;print it pop d ;get top of memory back lxi H,-(800h+100h) ;ccp size + tpa dad d ;subtract it, answer left in hl call decout ;print it call tb2 ;print rest of line db ' bytes before overlaying the ccp.',13,10,'$' ; tb2: mvi c,9 ;print msg function pop d ;get msg adrs call 5 ;print it pop h ;restore ccp stack sphl ret ;back to the ccp ; ; subroutines ; ; Console output routine ; prints character in 'a' register ; co: push h push d push b mov e,a ;character to e for CP/M mvi c,2 ;print console function call 5 ;print character pop b pop d pop h ret ; ; Decimal output routine ; this routine has following ; entry and external parameters: ; ; entry: hl=binary number to print in decimal ; external calls: co routine ; ** note...this routine is recursive, and uses ; 6 bytes of stack for each recursive call, in ad- ; dition to any stack space used by the co routine. ; decout: push b push d push h lxi b,-10 lxi d,-1 ; decou2: dad b inx d jc decou2 lxi b,10 dad b xchg mov a,h ora l cnz decout mov a,e adi '0' call co pop h pop d pop b ret ; stack equ $+80 ;40 level stack ; end