; ; Interface to standard library routines. ; ; ;------------------------------------------------ ; ; getc from getc.asm ; ; Calling sequence: ; ; getc ; ; Returns char read from standard input in AL. ; getc macro ifndef sl_getc stdlib segment para public 'slcode' extrn sl_getc:far stdlib ends endif call sl_getc endm ; ; ; GetcStdIn macro ifndef sl_GetcStdIn stdlib segment para public 'slcode' extrn sl_GetcStdIn:far stdlib ends endif call sl_GetcStdIn endm ; ; GetcBIOS macro ifndef sl_GetcBIOS stdlib segment para public 'slcode' extrn sl_GetcBIOS:far stdlib ends endif call sl_GetcBIOS endm ; ; SetInAdrs macro ifndef sl_SetInAdrs stdlib segment para public 'slcode' extrn sl_SetInAdrs:far stdlib ends endif call sl_SetInAdrs endm ; ; GetInAdrs macro ifndef sl_GetInAdrs stdlib segment para public 'slcode' extrn sl_GetInAdrs:far stdlib ends endif call sl_GetInAdrs endm ; ; PushInAdrs macro ifndef sl_PushInAdrs stdlib segment para public 'slcode' extrn sl_PushInAdrs:far stdlib ends endif call sl_PushInAdrs endm ; ; PopInAdrs macro ifndef sl_PopInAdrs stdlib segment para public 'slcode' extrn sl_PopInAdrs:far stdlib ends endif call sl_PopInAdrs endm ; ; ;------------------------------------------------ ; ; gets from gets.asm ; ; Calling sequence: ; ; gets ; ; Reads a string from the standard input (up to EOLN), allocates storage ; for that string on the heap, and returns a pointer to that string in ; ES:SI. ; ; gets macro ifndef sl_gets stdlib segment para public 'slcode' extrn sl_gets:far stdlib ends endif call sl_gets endm ; ; atol macro ifndef sl_atol stdlib segment para public 'slcode' extrn sl_atol:far stdlib ends endif call sl_atol endm ; atoul macro ifndef sl_atoul stdlib segment para public 'slcode' extrn sl_atoul:far stdlib ends endif call sl_atoul endm ; ; ; atol2 macro ifndef sl_atol2 stdlib segment para public 'slcode' extrn sl_atol2:far stdlib ends endif call sl_atol2 endm ; atoul2 macro ifndef sl_atoul2 stdlib segment para public 'slcode' extrn sl_atoul2:far stdlib ends endif call sl_atoul2 endm ; ; ; atoi and atou from atoi.asm ; atoi macro ifndef sl_atoi stdlib segment para public 'slcode' extrn sl_atoi:far stdlib ends endif call sl_atoi endm ; atou macro ifndef sl_atou stdlib segment para public 'slcode' extrn sl_atou:far stdlib ends endif call sl_atou endm ; ; atoi2 macro ifndef sl_atoi2 stdlib segment para public 'slcode' extrn sl_atoi2:far stdlib ends endif call sl_atoi2 endm ; atou2 macro ifndef sl_atou2 stdlib segment para public 'slcode' extrn sl_atou2:far stdlib ends endif call sl_atou2 endm ; ; ; atoh/2 and atolh/2 from atoh.asm ; atoh macro ifndef sl_atoh stdlib segment para public 'slcode' extrn sl_atoh:far stdlib ends endif call sl_atoh endm ; ; atolh macro ifndef sl_atolh stdlib segment para public 'slcode' extrn sl_atolh:far stdlib ends endif call sl_atolh endm ; ; atoh2 macro ifndef sl_atoh2 stdlib segment para public 'slcode' extrn sl_atoh2:far stdlib ends endif call sl_atoh2 endm ; ; atolh2 macro ifndef sl_atolh2 stdlib segment para public 'slcode' extrn sl_atolh2:far stdlib ends endif call sl_atolh2 endm ; ; ;------------------------------------------------ ; ; ISize macro ifndef sl_ISize stdlib segment para public 'slcode' extrn sl_ISize:far stdlib ends endif call sl_Isize endm ; USize macro ifndef sl_USize stdlib segment para public 'slcode' extrn sl_USize:far stdlib ends endif call sl_USize endm ; ; ; LSize and ULSize from lsize.asm ; LSize macro ifndef sl_LSize stdlib segment para public 'slcode' extrn sl_LSize:far stdlib ends endif call sl_Lsize endm ; ULSize macro ifndef sl_ULSize stdlib segment para public 'slcode' extrn sl_ULSize:far stdlib ends endif call sl_ULSize endm ; ; ;----------------------------------------------------------------------- ; ; Print macro ifndef sl_print stdlib segment para public 'slcode' extrn sl_print:far stdlib ends endif call sl_print endm ; ;--------------------------------------------------------------------------- ; ; Printf macro ifndef sl_printf stdlib segment para public 'slcode' extrn sl_printf:far stdlib ends endif call sl_printf endm ; ; SPrintf macro ifndef sl_sprintf stdlib segment para public 'slcode' extrn sl_sprintf:far ifndef sp_BufSize extrn sp_BufSize:word endif stdlib ends endif call sl_sprintf endm ; ; SBPrintf macro ifndef sl_sbprintf stdlib segment para public 'slcode' extrn sl_sbprintf:far stdlib ends endif call sl_sbprintf endm ; ; ; Scanf macro ifndef sl_scanf stdlib segment para public 'slcode' extrn sl_scanf:far stdlib ends endif call sl_scanf endm ; SScanf macro ifndef sl_sscanf stdlib segment para public 'slcode' extrn sl_sscanf:far stdlib ends endif call sl_sscanf endm ; ; ;--------------------------------------------------------------------------- ; ; Putc macro ifndef sl_putc stdlib segment para public 'slcode' extrn sl_putc:far stdlib ends endif call sl_putc endm ; ; Putcr macro ifndef sl_putcr stdlib segment para public 'slcode' extrn sl_putcr:far stdlib ends endif call sl_putcr endm ; ; ; PutcStdOut macro ifndef sl_putcStdOut stdlib segment para public 'slcode' extrn sl_putcStdOut:far stdlib ends endif call sl_putcStdOut endm ; ; ; PutcBIOS macro ifndef sl_putcBIOS stdlib segment para public 'slcode' extrn sl_putcBIOS:far stdlib ends endif call sl_putcBIOS endm ; ; ; SetOutAdrs macro ifndef sl_SetOutAdrs stdlib segment para public 'slcode' extrn sl_SetOutAdrs:far stdlib ends endif call sl_SetOutAdrs endm ; ; GetOutAdrs macro ifndef sl_GetOutAdrs stdlib segment para public 'slcode' extrn sl_GetOutAdrs:far stdlib ends endif call sl_GetOutAdrs endm ; ; PushOutAdrs macro ifndef sl_PushOutAdrs stdlib segment para public 'slcode' extrn sl_PushOutAdrs:far stdlib ends endif call sl_PushOutAdrs endm ; ; PopOutAdrs macro ifndef sl_PopOutAdrs stdlib segment para public 'slcode' extrn sl_PopOutAdrs:far stdlib ends endif call sl_PopOutAdrs endm ; ; PutISize macro ifndef sl_putisize stdlib segment para public 'slcode' extrn sl_putisize:far stdlib ends endif call sl_putisize endm ; ; PutUSize macro ifndef sl_putusize stdlib segment para public 'slcode' extrn sl_putusize:far stdlib ends endif call sl_putusize endm ; ; ; PutLSize macro ifndef sl_putlsize stdlib segment para public 'slcode' extrn sl_putlsize:far stdlib ends endif call sl_putlsize endm ; ; PutULSize macro ifndef sl_putulsize stdlib segment para public 'slcode' extrn sl_putulsize:far stdlib ends endif call sl_putulsize endm ; ; ;--------------------------------------------------------------------------- ; ; Puts macro ifndef sl_puts stdlib segment para public 'slcode' extrn sl_puts:far stdlib ends endif call sl_puts endm ; ; ;---------------------------------------------------------------------------- ; ; Puth macro ifndef sl_puth stdlib segment para public 'slcode' extrn sl_puth:far stdlib ends endif call sl_puth endm ; ; Putw macro ifndef sl_putw stdlib segment para public 'slcode' extrn sl_putw:far stdlib ends endif call sl_putw endm ; ;--------------------------------------------------------------------------- ; Puti macro ifndef sl_puti stdlib segment para public 'slcode' extrn sl_puti:far stdlib ends endif call sl_puti endm ; ; Putu macro ifndef sl_putu stdlib segment para public 'slcode' extrn sl_putu:far stdlib ends endif call sl_putu endm ; ; ; Putl macro ifndef sl_putl stdlib segment para public 'slcode' extrn sl_putl:far stdlib ends endif call sl_putl endm ; ; PutUL macro ifndef sl_putul stdlib segment para public 'slcode' extrn sl_putul:far stdlib ends endif call sl_putul endm ; ; ;-------------------------------------------------------------------------- ; ; itoa macro ifndef sl_itoa stdlib segment para public 'slcode' extrn sl_itoa:far stdlib ends endif call sl_itoa endm ; ; utoa macro ifndef sl_utoa stdlib segment para public 'slcode' extrn sl_utoa:far stdlib ends endif call sl_utoa endm ; ; ; htoa macro ifndef sl_htoa stdlib segment para public 'slcode' extrn sl_htoa:far stdlib ends endif call sl_htoa endm ; ; wtoa macro ifndef sl_wtoa stdlib segment para public 'slcode' extrn sl_wtoa:far stdlib ends endif call sl_wtoa endm ; ; ; ltoa macro ifndef sl_ltoa stdlib segment para public 'slcode' extrn sl_ltoa:far stdlib ends endif call sl_ltoa endm ; ; ; ultoa macro ifndef sl_ultoa stdlib segment para public 'slcode' extrn sl_ultoa:far stdlib ends endif call sl_ultoa endm ; ; ; MemInit macro ifndef sl_MemInit stdlib segment para public 'slcode' extrn sl_MemInit:far stdlib ends endif call sl_MemInit endm ; ; ; malloc macro ifndef sl_malloc stdlib segment para public 'slcode' extrn sl_malloc:far stdlib ends endif call sl_malloc endm ; ; realloc macro ifndef sl_realloc stdlib segment para public 'slcode' extrn sl_realloc:far stdlib ends endif call sl_realloc endm ; ; DupPtr macro ifndef sl_dupptr stdlib segment para public 'slcode' extrn sl_dupptr:far stdlib ends endif call sl_dupptr endm ; ; free macro ifndef sl_free stdlib segment para public 'slcode' extrn sl_free:far stdlib ends endif call sl_free endm ; ; ; ; IsInHeap macro ifndef sl_IsInHeap stdlib segment para public 'slcode' extrn sl_IsInHeap:far stdlib ends endif call sl_IsInHeap endm ; ; IsPtr macro ifndef sl_IsPtr stdlib segment para public 'slcode' extrn sl_IsPtr:far stdlib ends endif call sl_IsPtr endm ; ; ;--------------------------------------------------------------------------- ; IsAlNum macro ifndef sl_IsAlNum stdlib segment para public 'slcode' extrn sl_IsAlNum:far stdlib ends endif call sl_IsAlNum endm ; ; ; IsxDigit- Checks al to see if it is a hex digit. ; IsxDigit macro ifndef sl_IsxDigit stdlib segment para public 'slcode' extrn sl_IsxDigit:far stdlib ends endif call sl_IsxDigit endm ; ; ; ToLower macro local NoCnvrt cmp al, 'A' jb NoCnvrt cmp al, 'Z' ja NoCnvrt or al, 20h NoCnvrt: endm ; ; ; ToUpper macro local NoCnvrt cmp al, 'a' jb NoCnvrt cmp al, 'z' ja NoCnvrt and al, 05fh NoCnvrt: endm ; ; ; IsDigit macro local NotDigit, IsDigit cmp al, '0' jb NotDigit ;Note: this also clears ZF. cmp al, '9' ja NotDigit ;Also clears ZF. cmp al, al ;Set Zero flag NotDigit: endm ; ; ; IsAlpha macro local IsAl, NotAlpha cmp al, 'A' jb NotAlpha ;Also clears ZF. cmp al, 'Z' jbe IsAl cmp al, 'a' jb NotAlpha cmp al, 'z' ja NotAlpha IsAl: cmp al, al ;Set ZF. NotAlpha: endm ; ; IsLower macro local NotLower cmp al, 'a' jb NotLower cmp al, 'z' ja NotLower cmp al, al ;Set ZF. NotLower: endm ; ; ; IsUpper- Checks to see if the character in al is upper case. ; IsUpper macro local NotUpper cmp al, 'A' jb NotUpper cmp al, 'Z' ja NotUpper cmp al, al ;Set ZF. NotUpper: endm ; ; ;-------------------------------------------------------------------------- ; ; strcpy macro ifndef sl_strcpy stdlib segment para public 'slcode' extrn sl_strcpy:far stdlib ends endif call sl_strcpy endm ; ; ; ; strcpyl macro ifndef sl_strcpyl stdlib segment para public 'slcode' extrn sl_strcpyl:far stdlib ends endif call sl_strcpyl endm ; ; ; strdup macro ifndef sl_strdup stdlib segment para public 'slcode' extrn sl_strdup:far stdlib ends endif call sl_strdup endm ; ; ; strdupl macro ifndef sl_strdupl stdlib segment para public 'slcode' extrn sl_strdupl:far stdlib ends endif call sl_strdupl endm ; ; strlen macro ifndef sl_strlen stdlib segment para public 'slcode' extrn sl_strlen:far stdlib ends endif call sl_strlen endm ; ; strcat macro ifndef sl_strcat stdlib segment para public 'slcode' extrn sl_strcat:far stdlib ends endif call sl_strcat endm ; ; strcatl macro ifndef sl_strcatl stdlib segment para public 'slcode' extrn sl_strcatl:far stdlib ends endif call sl_strcatl endm ; ; strcat2 macro ifndef sl_strcat2 stdlib segment para public 'slcode' extrn sl_strcat2:far stdlib ends endif call sl_strcat2 endm ; ; ; strcat2l macro ifndef sl_strcat2l stdlib segment para public 'slcode' extrn sl_strcat2l:far stdlib ends endif call sl_strcat2l endm ; ; ; strchr macro ifndef sl_strchr stdlib segment para public 'slcode' extrn sl_strchr:far stdlib ends endif call sl_strchr endm ; ; strstr macro ifndef sl_strstr stdlib segment para public 'slcode' extrn sl_strstr:far stdlib ends endif call sl_strstr endm ; ; ; strstrl macro ifndef sl_strstrl stdlib segment para public 'slcode' extrn sl_strstrl:far stdlib ends endif call sl_strstrl endm ; ; ; strcmp macro ifndef sl_strcmp stdlib segment para public 'slcode' extrn sl_strcmp:far stdlib ends endif call sl_strcmp endm ; ; ; stricmp- As with strcmp above, except it is case insensitive. ; stricmp macro ifndef sl_stricmp stdlib segment para public 'slcode' extrn sl_stricmp:far stdlib ends endif call sl_stricmp endm ; ; stricmpl macro ifndef sl_stricmpl stdlib segment para public 'slcode' extrn sl_stricmpl:far stdlib ends endif call sl_stricmpl endm ; strcmpl macro ifndef sl_strcmpl stdlib segment para public 'slcode' extrn sl_strcmpl:far stdlib ends endif call sl_strcmpl endm ; ; strupr macro ifndef sl_strupr stdlib segment para public 'slcode' extrn sl_strupr:far stdlib ends endif call sl_strupr endm ; ; strupr2 macro ifndef sl_strupr2 stdlib segment para public 'slcode' extrn sl_strupr2:far stdlib ends endif call sl_strupr2 endm ; ; strlwr macro ifndef sl_strlwr stdlib segment para public 'slcode' extrn sl_strlwr:far stdlib ends endif call sl_strlwr endm ; ; strlwr2 macro ifndef sl_strlwr2 stdlib segment para public 'slcode' extrn sl_strlwr2:far stdlib ends endif call sl_strlwr2 endm ; ; strset macro ifndef sl_strset stdlib segment para public 'slcode' extrn sl_strset:far stdlib ends endif call sl_strset endm ; ; strset2 macro ifndef sl_strset2 stdlib segment para public 'slcode' extrn sl_strset2:far stdlib ends endif call sl_strset2 endm ; ; strspan macro ifndef sl_strspan stdlib segment para public 'slcode' extrn sl_strspan:far stdlib ends endif call sl_strspan endm ; ; ; strspanl macro ifndef sl_strspanl stdlib segment para public 'slcode' extrn sl_strspanl:far stdlib ends endif call sl_strspanl endm ; ; ; strcspan macro ifndef sl_strcspan stdlib segment para public 'slcode' extrn sl_strcspan:far stdlib ends endif call sl_strcspan endm ; ; ; strcspanl macro ifndef sl_strcspanl stdlib segment para public 'slcode' extrn sl_strcspanl:far stdlib ends endif call sl_strcspanl endm ; ; ; ; ; set macro n0,n1,n2,n3,n4,n5,n6,n7 n0 db 1 n1 db 2 n2 db 4 n3 db 8 n4 db 10h n5 db 20h n6 db 40h n7 db 80h db 264 dup (0) endm ; ; CreateSets macro ifndef sl_CreateSets stdlib segment para public 'slcode' extrn sl_CreateSets:far stdlib ends endif call sl_CreateSets endm ; ; EmptySet macro ifndef sl_EmptySet stdlib segment para public 'slcode' extrn sl_EmptySet:far stdlib ends endif call sl_EmptySet endm ; ; RangeSet macro ifndef sl_RangeSet stdlib segment para public 'slcode' extrn sl_RangeSet:far stdlib ends endif call sl_RangeSet endm ; ; AddStr macro ifndef sl_AddStr stdlib segment para public 'slcode' extrn sl_AddStr:far stdlib ends endif call sl_AddStr endm ; ; AddStrl macro ifndef sl_AddStrl stdlib segment para public 'slcode' extrn sl_AddStrl:far stdlib ends endif call sl_AddStrl endm ; ; RmvStr macro ifndef sl_RmvStr stdlib segment para public 'slcode' extrn sl_RmvStr:far stdlib ends endif call sl_RmvStr endm ; ; RmvStrl macro ifndef sl_RmvStrl stdlib segment para public 'slcode' extrn sl_RmvStrl:far stdlib ends endif call sl_RmvStrl endm ; ; AddChar macro ifndef sl_AddChar stdlib segment para public 'slcode' extrn sl_AddChar:far stdlib ends endif call sl_AddChar endm ; ; RmvChar macro ifndef sl_RmvChar stdlib segment para public 'slcode' extrn sl_RmvChar:far stdlib ends endif call sl_RmvChar endm ; ; Member macro ifndef sl_member stdlib segment para public 'slcode' extrn sl_member:far stdlib ends endif call sl_member endm ; ; CopySet macro ifndef sl_CopySet stdlib segment para public 'slcode' extrn sl_CopySet:far stdlib ends endif call sl_CopySet endm ; ; setunion macro ifndef sl_union stdlib segment para public 'slcode' extrn sl_union:far stdlib ends endif call sl_union endm ; ; SetIntersect macro ifndef sl_Intersect stdlib segment para public 'slcode' extrn sl_Intersect:far stdlib ends endif call sl_Intersect endm ; ; SetDifference macro ifndef sl_Difference stdlib segment para public 'slcode' extrn sl_Difference:far stdlib ends endif call sl_Difference endm ; ; NextItem macro ifndef sl_NextItem stdlib segment para public 'slcode' extrn sl_NextItem:far stdlib ends endif call sl_NextItem endm ; ; RmvItem macro ifndef sl_RmvItem stdlib segment para public 'slcode' extrn sl_RmvItem:far stdlib ends endif call sl_RmvItem endm ; ; ; ; ; ;-------------------------------------------------------------------------- ; ; ; Routines to add: ; ; getenv, argc, argv ; ; ; String Routines: ; ; strins, strinsl, strins2, strins2l, strdel, strdel2, substr, substr2 ; ; File routines: ; ; fclose, feof, fflush, fgetc, fputc, fgetpos, fgets, filelength, fopen, ; fprintf, fputs, fread, fscanf, fseek, fstat, fwrite ; ; getcwd, mkdir, chdir, mktemp, remove, rename, rewind, rmdir, rmtemp, ;