home *** CD-ROM | disk | FTP | other *** search
- stdlib segment para public 'slcode'
- assume cs:stdlib
- extrn sl_putc:far, sl_ISize:far, sl_USize:far
- ;
- ; Puti prints the value in AX as a signed integer value. CX contains the
- ; minimum field width for the number.
- ;
- public sl_PutiSize
- sl_PutiSize proc far
- push ax
- push bx
- push cx
- push dx
- push ax
- call sl_ISize
- sub cx, ax
- js NoSpaces
- jcxz NoSpaces
- mov al, ' '
- SpcsLoop: call sl_Putc
- loop SpcsLoop
- NoSpaces: pop ax
- cmp ax, 0
- jge Doit
- push ax
- mov al, '-'
- call sl_Putc
- pop ax
- neg ax
- ;
- DoIt: call puti2
- pop dx
- pop cx
- pop bx
- pop ax
- ret
- sl_PutiSize endp
- ;
- ; Putu prints the value in AX as an unsigned integer value.
- ;
- public sl_PutUSize
- sl_PutUSize proc far
- push ax
- push bx
- push cx
- push dx
- push ax
- call sl_USize
- sub cx, ax
- js NoUSpaces
- jcxz NoUSpaces
- mov al, ' '
- SpcsLp2: call sl_Putc
- loop SpcsLp2
- NoUSpaces: pop ax
- call PutI2
- pop dx
- pop cx
- pop bx
- pop ax
- ret
- sl_PutUSize endp
- ;
- ; PutI2- Recursive routine to actually print the value in AX as an integer.
- ;
- Puti2 proc near
- mov bx, 10
- xor dx, dx
- div bx
- or ax, ax ;See if ax=0
- jz Done
- push dx
- call Puti2
- pop dx
- Done: mov al, dl
- or al, '0'
- call sl_Putc
- ret
- PutI2 endp
- stdlib ends
- end
-