home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 5
/
ctrom5b.zip
/
ctrom5b
/
DOS
/
UTILITY
/
DIVERSEN
/
KWIKHELP
/
MACROS.INC
< prev
next >
Wrap
Text File
|
1994-12-01
|
3KB
|
190 lines
.NOLIST
;------------------------------------------------------------
; MACROS.LIB -- JT. Last time here: 18 June 1994
;------------------------------------------------------------
dosf equ int 21h
system equ int 20h
scout equ int 29h
null equ 0
nul equ 0
bell equ 7
tab equ 9
lf equ 10
ff equ 12
cr equ 13
eof equ 26
esc equ 27
eom equ '$'
space equ ' '
block equ 254
; This is needed if linking to a library
HEADER MACRO
sseg segment byte stack 'prog'
sseg ends
cseg segment byte public 'prog'
org 100h
main:
#em
PROMPT MACRO
push ax,dx
mov dx,offset #1
mov ah,9
int 21h
pop dx,ax
#em
WRITE MACRO
push si,ax,dx
mov si,OFFSET #1
l101: lodsb
or al,al
jz >l102
mov dl,al
mov ah,2
int 21h
jmp l101
l102: pop dx,ax,si
#em
CLEAR MACRO
mov #1,0
#em
SAY MACRO
call print
db #1,#2,#3,#4,0
#em
SAY@ MACRO
call print
db #1,#2,#3,#4,cr,lf,0
#em
GOODEXIT MACRO
mov ax,4C00h
int 21h
#em
BADEXIT MACRO
mov ax,4C01h
int 21h
#em
PUSHALL MACRO
push ax,bx,cx,dx,si,di,ds,es
#em
POPALL MACRO
pop es,ds,di,si,dx,cx,bx,ax
#em
JMP_FAR MACRO
db 0EAh
#em
@PBX4HC MACRO
@sixteen dw 16
PBX4HC: push ax,cx,dx
mov ax,bx
mov cx,4
L101: xor dx,dx ; clear remainder
div @sixteen ; div AX by 16
push dx ; save remainder
loop l101
mov cx,4
L102: pop ax ; loop and print em
add al,'0'
cmp al,'9'
jbe >l103
add al,7
L103: mov ah,2
mov dl,al
int 21h
loop l102
pop dx,cx,ax
ret
#EM
@PBX5DC MACRO
@ten dw 10
PBX5DC: push ax,cx,dx
mov ax,bx
xor cx,cx
L101: inc cx ; count the loops
xor dx,dx ; clear remainder
div @ten ; div AX by 10
push dx ; save remainder
or ax,ax ; any quotient?
jnz l101 ; yes
L102: pop ax ; loop and print em
add al,'0' ; make it ascii
mov ah,2
mov dl,al
int 21h
loop l102
pop dx,cx,ax
ret
#EM
@PRINT MACRO
AXREG dw 0
BXREG dw 0
DXREG dw 0
PRINT: mov axreg,ax
mov bxreg,bx
mov dxreg,dx
mov bp,sp ; stack ptr is first char
xchg bx,[bp]
mov ah,2
L101: mov al,[bx] ; get char
inc bx ; point to next char
test al ; done if 0
jz >l102
mov dl,al
int 21h
jmp l101
L102: mov bp,sp
xchg bx,[bp]
mov ax,axreg
mov bx,bxreg
mov dx,dxreg
ret
#EM
@CAPS MACRO
CAPS: cmp al,'a'
jb >l101
cmp al,'z'
ja >l101
and al,5Fh
L101: ret
#EM
@MESSAGE MACRO
MESSAGE: mov ah,9
int 21h
ret
#EM
@CRLF MACRO
CRLF: push ax,dx
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
pop dx,ax
ret
#EM
.LIST