TPALOC EQU 0100H page 76 CPM: EQU 1 MPM2: EQU 0 if not cpm CCCORG: EQU WHATEVER RAM: EQU WHATEVER2 BASE: EQU WHATEVER3 endif if cpm base: equ 0000h fcb: equ base+5ch tbuff: equ base+80h bdos: equ base+5 tpa: equ base+100h nfcbs: equ 9 errorv: equ 255 cccorg: equ tpa ram: equ cccorg+52Bh endif cr: equ 0dh lf: equ 0ah newlin: equ lf tab: equ 9 bs: equ 08h cntrlc: equ 3 fexitv: equ cccorg+09h error: equ cccorg+1dh exit: equ error+3 if cpm close: equ error+6 setfcb: equ error+9 fgfd: equ error+12 fgfcb: equ error+15 setfcu: equ error+18 setusr: equ error+21 rstusr: equ error+24 khack: equ error+33 clrex: equ error+36 endif eqwel: equ cccorg+0e5h smod: equ cccorg+10fh usmod: equ cccorg+129h smul: equ cccorg+13fh usmul: equ cccorg+16bh usdiv: equ cccorg+189h sdiv: equ cccorg+1cbh cmphd: equ cccorg+1ddh cmh: equ cccorg+1fah cmd: equ cccorg+202h ma1toh: equ cccorg+20ah ma2toh: equ cccorg+213h ma3toh: equ ma2toh+6 ma4toh: equ ma2toh+12 ma5toh: equ ma2toh+18 ma6toh: equ ma2toh+24 ma7toh: equ ma2toh+30 arghak: equ ma2toh+36 org ram ds 20 errnum: ds 1 pbase: ds 2 ysize: ds 2 xsize: ds 2 psize: ds 2 rseed: ds 8 args: ds 14 iohack: ds 6 allocp: ds 2 alocmx: ds 2 room: ds 30 uroom: ds 20 extrns: equ cccorg+15h cccsiz: equ cccorg+17h codend: equ cccorg+19h freram: equ cccorg+1bh arg1: equ args arg2: equ args+2 arg3: equ args+4 arg4: equ args+6 arg5: equ args+8 arg6: equ args+10 arg7: equ args+12 tmp: equ room tmp1: equ room+1 tmp2: equ room+2 tmp2a: equ room+4 ungetl: equ room+6 unused: equ room+7 curusr: equ room+8 usrnum: equ room+9 mode: equ room+10 freeze: equ room+11 pending: equ room+12 pendch: equ room+13 quitc: equ room+14 echo: equ 1 quit: equ 2 flow: equ 4 strip: equ 8 expand: equ 16 swap: equ 32 if cpm conin: equ 1 conout: equ 2 lstout: equ 5 dconio: equ 6 pstrng: equ 9 getlin: equ 10 cstat: equ 11 select: equ 14 openc: equ 15 closec: equ 16 delc: equ 19 reads: equ 20 creatc: equ 22 renc: equ 23 sdma: equ 26 gsuser: equ 32 readr: equ 33 writr: equ 34 cfsizc: equ 35 srrecc: equ 36 endif drivefn equ 14 curdskfn equ 25 dmafn equ 26 openfn equ 15 closefn equ 16 srchfn equ 17 userfn equ 32 readrfn equ 33 rrecno equ 33 bdos equ 5 tfcb equ 5ch EOS EQU 0 ORG TPALOC+200H DB 0,0,0,0,0 BDOSDE$BEG EQU $-TPALOC DB 0 DW BDOSDE$END-$-2 BDOSDE$STRT EQU $ BDOSDE$EF$BDOSDE EQU BDOSDE$STRT BDOSDE$STRTC EQU $ call arghak push b lda arg1 mov c,a lhld arg2 xchg call bdos pop b push h lhld arg3 mov m,e inx h mov m,d pop h ret BDOSDE$END EQU $ DW 0 GDSBDATE$BEG EQU $-TPALOC DB 0 DW GDSBDATE$END-$-2 GDSBDATE$STRT EQU $ GDSBDATE$EF$GDSBDATE EQU GDSBDATE$STRT GDSBDATE$STRTC EQU $ PUSH B GDSBDATE$L$GTDATE EQU $-GDSBDATE$STRT GDSBDATE$R000 EQU $+1-GDSBDATE$STRT call GDSBDATE$L$CKCLK GDSBDATE$R001 EQU $+1-GDSBDATE$STRT jz GDSBDATE$L$GEXIT GDSBDATE$R002 EQU $+1-GDSBDATE$STRT lxi h,GDSBDATE$L$BCDBUF push h GDSBDATE$R003 EQU $+1-GDSBDATE$STRT call GDSBDATE$L$DSCLK pop h mov a,h ora l GDSBDATE$L$GEXIT EQU $-GDSBDATE$STRT POP B ret GDSBDATE$L$BCDBUF EQU $-GDSBDATE$STRT ds 6 GETVFN equ 12 DSID equ 'D' ;DateStamper ID for getversion call GDSBDATE$L$CKCLK EQU $-GDSBDATE$STRT mvi e,DSID mvi c,GETVFN call bdos cpi 22h GDSBDATE$R004 EQU $+1-GDSBDATE$STRT jnz GDSBDATE$L$NOCLK mov a,h cpi DSID xchg GDSBDATE$R005 EQU $+1-GDSBDATE$STRT jz GDSBDATE$L$CLKA GDSBDATE$L$TST2 EQU $-GDSBDATE$STRT lhld 0001h mov a,l cpi 3 GDSBDATE$R006 EQU $+1-GDSBDATE$STRT jnz GDSBDATE$L$NOCLK LOGDR1 equ 0C42h HILOGD equ 0CH LOLOGD equ 042h BITMAP equ 06a3h LOBITM equ 0a3h HIBITM equ 06h DELTAP equ (HILOGD-HIBITM) GETVER equ 0C7Eh IDSUM equ 011h CLKOFF equ 42H+7H BIOSWB equ 0e03h mov b,h lxi d,(GETVER+1-BIOSWB) dad d mov a,m cpi 22h GDSBDATE$R007 EQU $+1-GDSBDATE$STRT jnz GDSBDATE$L$NOCLK lxi d,(LOGDR1+1)-(GETVER+1) dad d mov e,m mov a,e cpi LOBITM inx h mov d,m GDSBDATE$R008 EQU $+1-GDSBDATE$STRT jnz GDSBDATE$L$CHECK2 mov a,d adi DELTAP cmp h GDSBDATE$R009 EQU $+1-GDSBDATE$STRT jnz GDSBDATE$L$CHECK2 GDSBDATE$L$NOCLK EQU $-GDSBDATE$STRT lxi h,0 GDSBDATE$R010 EQU $+1-GDSBDATE$STRT jmp GDSBDATE$L$CLKA GDSBDATE$L$CHECK2 EQU $-GDSBDATE$STRT mov a,b sub d cmc GDSBDATE$R011 EQU $+1-GDSBDATE$STRT jnc GDSBDATE$L$STDCLK sui 0eh GDSBDATE$R012 EQU $+1-GDSBDATE$STRT jc GDSBDATE$L$NOCLK GDSBDATE$L$STDCLK EQU $-GDSBDATE$STRT lxi h,-CLKOFF dad d GDSBDATE$L$CLKA EQU $-GDSBDATE$STRT GDSBDATE$R013 EQU $+1-GDSBDATE$STRT shld GDSBDATE$L$XCLKADD+1 mov a,h ora l ret GDSBDATE$L$DSCLK EQU $-GDSBDATE$STRT xchg GDSBDATE$R014 EQU $+1-GDSBDATE$STRT lhld GDSBDATE$L$XCLKADD+1 mov a,h ora l rz xchg GDSBDATE$L$XCLKADD EQU $-GDSBDATE$STRT call 0000 stc ret GDSBDATE$END EQU $ DW 15 DW GDSBDATE$R000 DW GDSBDATE$R001 DW GDSBDATE$R002 DW GDSBDATE$R003 DW GDSBDATE$R004 DW GDSBDATE$R005 DW GDSBDATE$R006 DW GDSBDATE$R007 DW GDSBDATE$R008 DW GDSBDATE$R009 DW GDSBDATE$R010 DW GDSBDATE$R011 DW GDSBDATE$R012 DW GDSBDATE$R013 DW GDSBDATE$R014 GDSADATE$BEG EQU $-TPALOC DB 'GDSBDAT','E'+80H DB 'ASCDAT','E'+80H DB 0 DW GDSADATE$END-$-2 GDSADATE$STRT EQU $ GDSADATE$R000 EQU $+1-GDSADATE$STRT JMP GDSADATE$STRTC-GDSADATE$STRT GDSADATE$EF$GDSADATE EQU GDSADATE$STRT GDSADATE$EF$GDSBDATE JMP 0 GDSADATE$EF$ASCDATE JMP 0 GDSADATE$STRTC EQU $ PUSH B GDSADATE$R001 EQU $+1-GDSADATE$STRT call GDSADATE$EF$GDSBDATE-GDSADATE$STRT pop b rz push b push h GDSADATE$R002 EQU $+1-GDSADATE$STRT call GDSADATE$EF$ASCDATE-GDSADATE$STRT pop d pop b ret GDSADATE$END EQU $ DW 3 DW GDSADATE$R000 DW GDSADATE$R001 DW GDSADATE$R002 ASCDATE$BEG EQU $-TPALOC DB 0 DW ASCDATE$END-$-2 ASCDATE$STRT EQU $ ASCDATE$EF$ASCDATE EQU ASCDATE$STRT ASCDATE$STRTC EQU $ call ma1toh PUSH B ASCDATE$R000 EQU $+1-ASCDATE$STRT lxi d,ASCDATE$L$ABUF mov a,m ASCDATE$R001 EQU $+1-ASCDATE$STRT sta ASCDATE$L$YR+1 inx h inx h mov a,m push h ASCDATE$R002 EQU $+1-ASCDATE$STRT call ASCDATE$L$PUTBCD pop h dcx h mov a,m ASCDATE$R003 EQU $+1-ASCDATE$STRT call ASCDATE$L$BCD2BIN dcr a mov b,a add a add b mov e,a mvi d,0 push h ASCDATE$R004 EQU $+1-ASCDATE$STRT lxi h,ASCDATE$L$MONTBL dad d mvi b,3 ASCDATE$R005 EQU $+1-ASCDATE$STRT lxi d,ASCDATE$L$AMO ASCDATE$R006 EQU $+1-ASCDATE$STRT call ASCDATE$L$MOVE ASCDATE$R007 EQU $+1-ASCDATE$STRT lxi d,ASCDATE$L$AYR ASCDATE$L$YR EQU $-ASCDATE$STRT mvi a,00 ASCDATE$R008 EQU $+1-ASCDATE$STRT call ASCDATE$L$PUTBCD pop h inx h inx h mov a,m ral mov a,m ASCDATE$R009 EQU $+1-ASCDATE$STRT lxi d,ASCDATE$L$AHR ASCDATE$R010 EQU $+1-ASCDATE$STRT jnc ASCDATE$L$DOREG ASCDATE$R011 EQU $+1-ASCDATE$STRT call ASCDATE$L$RELTIM ASCDATE$R012 EQU $+1-ASCDATE$STRT jmp ASCDATE$L$GTXIT ASCDATE$L$DOREG EQU $-ASCDATE$STRT ASCDATE$R013 EQU $+1-ASCDATE$STRT call ASCDATE$L$REGTIM ASCDATE$L$GTXIT EQU $-ASCDATE$STRT ASCDATE$R014 EQU $+1-ASCDATE$STRT lxi h,ASCDATE$L$ABUF ASCDATE$L$FEXIT EQU $-ASCDATE$STRT POP B ret ASCDATE$L$BCD2BIN EQU $-ASCDATE$STRT mov c,a ani 0F0h rar rar rar rar mov b,a add a add a add b add a mov b,a mov a,c ani 00Fh add b ret RELCHAR equ '+' ASCDATE$L$RELTIM EQU $-ASCDATE$STRT sui 80h push psw inx h mov l,m pop psw mov h,a mvi a,RELCHAR stax d inx d xchg ASCDATE$R015 EQU $+1-ASCDATE$STRT shld ASCDATE$L$DECPTR xchg ASCDATE$R016 EQU $+1-ASCDATE$STRT call ASCDATE$L$DECZH ASCDATE$R017 EQU $+1-ASCDATE$STRT lxi h,ASCDATE$L$AHR+5 ASCDATE$R018 EQU $+1-ASCDATE$STRT lda ASCDATE$L$TERMIN mov m,a ret ASCDATE$L$ABUF EQU $-ASCDATE$STRT db '00 ' ASCDATE$L$AMO EQU $-ASCDATE$STRT db 'Jan 19' ASCDATE$L$AYR EQU $-ASCDATE$STRT db '00 ' ASCDATE$L$AHR EQU $-ASCDATE$STRT db '00:00:00' ASCDATE$L$TERMIN EQU $-ASCDATE$STRT db EOS ASCDATE$L$MONTBL EQU $-ASCDATE$STRT db 'JanFebMarAprMayJunJulAug' db 'SepOctNovDec' ASCDATE$L$REGTIM EQU $-ASCDATE$STRT ASCDATE$R019 EQU $+1-ASCDATE$STRT call ASCDATE$L$PUTBCD mvi a,':' stax d inx d inx h ASCDATE$R020 EQU $+1-ASCDATE$STRT call ASCDATE$L$PUTMBCD mvi a,':' stax d inx d inx h ASCDATE$L$PUTMBCD EQU $-ASCDATE$STRT mov a,m ASCDATE$L$PUTBCD EQU $-ASCDATE$STRT push psw ani 0F0h rar rar rar rar ASCDATE$R021 EQU $+1-ASCDATE$STRT call ASCDATE$L$PUTBIN pop psw ani 0Fh ASCDATE$L$PUTBIN EQU $-ASCDATE$STRT adi '0' stax d inx d ret ASCDATE$L$MOVE EQU $-ASCDATE$STRT mov a,m stax d inx h inx d dcr b ASCDATE$R022 EQU $+1-ASCDATE$STRT jnz ASCDATE$L$MOVE ret ASCDATE$L$DECZH EQU $-ASCDATE$STRT lxi d,-1000 ASCDATE$R023 EQU $+1-ASCDATE$STRT call ASCDATE$L$DIGIT lxi d,-100 ASCDATE$R024 EQU $+1-ASCDATE$STRT call ASCDATE$L$DIGIT lxi d,-10 ASCDATE$R025 EQU $+1-ASCDATE$STRT call ASCDATE$L$DIGIT mvi a,'0' ;get 1's digit add l ASCDATE$R026 EQU $+1-ASCDATE$STRT jmp ASCDATE$L$PUTDIG ASCDATE$L$DIGIT EQU $-ASCDATE$STRT mvi b,'0' ;start off with ascii 0 ASCDATE$L$DIGLP EQU $-ASCDATE$STRT push h dad d ASCDATE$R027 EQU $+1-ASCDATE$STRT jnc ASCDATE$L$DIGEX pop psw inr b ASCDATE$R028 EQU $+1-ASCDATE$STRT jmp ASCDATE$L$DIGLP ASCDATE$L$DIGEX EQU $-ASCDATE$STRT pop h mov a,b ASCDATE$L$PUTDIG EQU $-ASCDATE$STRT push h ASCDATE$R029 EQU $+1-ASCDATE$STRT lhld ASCDATE$L$DECPTR mov m,a inx h ASCDATE$R030 EQU $+1-ASCDATE$STRT shld ASCDATE$L$DECPTR pop h ret ASCDATE$L$DECPTR EQU $-ASCDATE$STRT dw 0 ASCDATE$END EQU $ DW 31 DW ASCDATE$R000 DW ASCDATE$R001 DW ASCDATE$R002 DW ASCDATE$R003 DW ASCDATE$R004 DW ASCDATE$R005 DW ASCDATE$R006 DW ASCDATE$R007 DW ASCDATE$R008 DW ASCDATE$R009 DW ASCDATE$R010 DW ASCDATE$R011 DW ASCDATE$R012 DW ASCDATE$R013 DW ASCDATE$R014 DW ASCDATE$R015 DW ASCDATE$R016 DW ASCDATE$R017 DW ASCDATE$R018 DW ASCDATE$R019 DW ASCDATE$R020 DW ASCDATE$R021 DW ASCDATE$R022 DW ASCDATE$R023 DW ASCDATE$R024 DW ASCDATE$R025 DW ASCDATE$R026 DW ASCDATE$R027 DW ASCDATE$R028 DW ASCDATE$R029 DW ASCDATE$R030 FILEDATE$BEG EQU $-TPALOC DB 0 DW FILEDATE$END-$-2 FILEDATE$STRT EQU $ FILEDATE$EF$FILEDATE EQU FILEDATE$STRT FILEDATE$STRTC EQU $ push b call ma2toh push h call ma4toh FILEDATE$R000 EQU $+1-FILEDATE$STRT shld FILEDATE$L$TDBUF xchg mvi c,DMAFN call bdos mvi c,CURDSKFN call bdos FILEDATE$R001 EQU $+1-FILEDATE$STRT sta FILEDATE$L$DRV mvi c,USERFN mvi e,0ffh call bdos FILEDATE$R002 EQU $+1-FILEDATE$STRT sta FILEDATE$L$USR pop d ldax d ora a FILEDATE$R003 EQU $+1-FILEDATE$STRT jz FILEDATE$L$SRCH push d dcr a mov e,a mvi c,DRIVEFN call bdos pop d FILEDATE$L$SRCH EQU $-FILEDATE$STRT lxi h,12 dad d xra a mov m,a inx h inx h mov m,a mvi c,srchfn call bdos inr a FILEDATE$R004 EQU $+1-FILEDATE$STRT jz FILEDATE$L$XNOTD dcr a FILEDATE$R005 EQU $+1-FILEDATE$STRT sta FILEDATE$L$ENTOFF xchg FILEDATE$R006 EQU $+1-FILEDATE$STRT shld FILEDATE$L$ENTREC mvi c,USERFN mvi e,0 call bdos mvi b,16 lxi h,tfcb push h FILEDATE$L$QLP EQU $-FILEDATE$STRT mvi m,'?' inx h dcr b FILEDATE$R007 EQU $+1-FILEDATE$STRT jnz FILEDATE$L$QLP pop d mvi c,SRCHFN call bdos FILEDATE$R008 EQU $+1-FILEDATE$STRT lxi d,FILEDATE$L$TDFCB+1 FILEDATE$R009 EQU $+1-FILEDATE$STRT lhld FILEDATE$L$TDBUF inx h mvi b,11 FILEDATE$R010 EQU $+1-FILEDATE$STRT call FILEDATE$L$MATCH7 FILEDATE$R011 EQU $+1-FILEDATE$STRT jnz FILEDATE$L$XNOTD FILEDATE$R012 EQU $+1-FILEDATE$STRT lxi d,FILEDATE$L$TDFCB push d mvi c,OPENFN call bdos pop d inr a FILEDATE$R013 EQU $+1-FILEDATE$STRT jz FILEDATE$L$XNOTD FILEDATE$R014 EQU $+1-FILEDATE$STRT lhld FILEDATE$L$ENTREC FILEDATE$L$SHFTR EQU $-FILEDATE$STRT mov a,h ora a rar mov h,a mov a,l rar mov l,a FILEDATE$R015 EQU $+1-FILEDATE$STRT shld FILEDATE$L$TDFCB+rrecno push d mvi c,READRFN call bdos pop d ora a FILEDATE$R016 EQU $+1-FILEDATE$STRT jnz FILEDATE$L$BADXIT FILEDATE$R017 EQU $+1-FILEDATE$STRT lhld FILEDATE$L$TDBUF FILEDATE$R018 EQU $+1-FILEDATE$STRT call FILEDATE$L$CKSUM FILEDATE$R019 EQU $+1-FILEDATE$STRT jnz FILEDATE$L$BADXIT FILEDATE$R020 EQU $+1-FILEDATE$STRT lda FILEDATE$L$ENTREC ani 1 FILEDATE$R021 EQU $+1-FILEDATE$STRT jz FILEDATE$L$XX1 add a add a FILEDATE$L$XX1 EQU $-FILEDATE$STRT mov b,a FILEDATE$R022 EQU $+1-FILEDATE$STRT lda FILEDATE$L$ENTOFF add b add a add a add a add a FILEDATE$R023 EQU $+1-FILEDATE$STRT lhld FILEDATE$L$TDBUF add l mov l,a FILEDATE$R024 EQU $+1-FILEDATE$STRT jnc FILEDATE$L$EX inr h FILEDATE$L$EX EQU $-FILEDATE$STRT push h FILEDATE$R025 EQU $+1-FILEDATE$STRT lxi d,FILEDATE$L$TDFCB mvi c,CLOSEFN call bdos FILEDATE$L$XIT EQU $-FILEDATE$STRT FILEDATE$R026 EQU $+1-FILEDATE$STRT lda FILEDATE$L$USR mov e,a mvi c,USERFN call bdos FILEDATE$R027 EQU $+1-FILEDATE$STRT lda FILEDATE$L$DRV mov e,a mvi c,DRIVEFN call bdos pop h pop b ret FILEDATE$L$BADXIT EQU $-FILEDATE$STRT lxi h,0 push h FILEDATE$R028 EQU $+1-FILEDATE$STRT jmp FILEDATE$L$EX FILEDATE$L$XNOTD EQU $-FILEDATE$STRT lxi h,0 push h FILEDATE$R029 EQU $+1-FILEDATE$STRT jmp FILEDATE$L$XIT FILEDATE$L$MATCH7 EQU $-FILEDATE$STRT ldax d xra m ani 7fh rnz inx h inx d dcr b FILEDATE$R030 EQU $+1-FILEDATE$STRT jnz FILEDATE$L$MATCH7 ret FILEDATE$L$CKSUM EQU $-FILEDATE$STRT mvi b,127 xra a FILEDATE$L$CKSU1 EQU $-FILEDATE$STRT add m inx h dcr b FILEDATE$R031 EQU $+1-FILEDATE$STRT jnz FILEDATE$L$CKSU1 ret FILEDATE$L$TDBUF EQU $-FILEDATE$STRT dw 0 FILEDATE$L$ENTREC EQU $-FILEDATE$STRT dw 0 FILEDATE$L$ENTOFF EQU $-FILEDATE$STRT db 0 FILEDATE$L$DRV EQU $-FILEDATE$STRT db 0 FILEDATE$L$USR EQU $-FILEDATE$STRT db 0 FILEDATE$L$TDFCB EQU $-FILEDATE$STRT db 0 db '!!!TIME&DAT',0,0,0,0 dw 0,0,0,0,0,0,0,0,0,0 FILEDATE$END EQU $ DW 32 DW FILEDATE$R000 DW FILEDATE$R001 DW FILEDATE$R002 DW FILEDATE$R003 DW FILEDATE$R004 DW FILEDATE$R005 DW FILEDATE$R006 DW FILEDATE$R007 DW FILEDATE$R008 DW FILEDATE$R009 DW FILEDATE$R010 DW FILEDATE$R011 DW FILEDATE$R012 DW FILEDATE$R013 DW FILEDATE$R014 DW FILEDATE$R015 DW FILEDATE$R016 DW FILEDATE$R017 DW FILEDATE$R018 DW FILEDATE$R019 DW FILEDATE$R020 DW FILEDATE$R021 DW FILEDATE$R022 DW FILEDATE$R023 DW FILEDATE$R024 DW FILEDATE$R025 DW FILEDATE$R026 DW FILEDATE$R027 DW FILEDATE$R028 DW FILEDATE$R029 DW FILEDATE$R030 DW FILEDATE$R031 STRCPY$BEG EQU $-TPALOC DB 0 DW STRCPY$END-$-2 STRCPY$STRT EQU $ STRCPY$EF$STRCPY EQU STRCPY$STRT STRCPY$STRTC EQU $ call ma1toh xchg call ma2toh push d STRCPY$L$STRCLP EQU $-STRCPY$STRT mov a,m ora a stax d inx h inx d STRCPY$R000 EQU $+1-STRCPY$STRT jnz STRCPY$L$STRCLP pop h ret STRCPY$END EQU $ DW 1 DW STRCPY$R000 TOUPPER$BEG EQU $-TPALOC DB 0 DW TOUPPER$END-$-2 TOUPPER$STRT EQU $ TOUPPER$EF$TOUPPER EQU TOUPPER$STRT TOUPPER$STRTC EQU $ call ma1toh mov a,l cpi 'a' rc cpi 'z'+1 rnc sui 20h mov l,a ret TOUPPER$END EQU $ DW 0 TOLOWER$BEG EQU $-TPALOC DB 0 DW TOLOWER$END-$-2 TOLOWER$STRT EQU $ TOLOWER$EF$TOLOWER EQU TOLOWER$STRT TOLOWER$STRTC EQU $ call ma1toh mov a,l cpi 'A' rc cpi 'Z'+1 rnc ori 20h mov l,a ret TOLOWER$END EQU $ DW 0 ISSPACE$BEG EQU $-TPALOC DB 0 DW ISSPACE$END-$-2 ISSPACE$STRT EQU $ ISSPACE$EF$ISSPACE EQU ISSPACE$STRT ISSPACE$STRTC EQU $ call ma1toh mov a,l lxi h,1 cpi ' ' rz cpi 09h rz cpi 0Ah rz dcx h ret ISSPACE$END EQU $ DW 0 ISALPHA$BEG EQU $-TPALOC DB 0 DW ISALPHA$END-$-2 ISALPHA$STRT EQU $ ISALPHA$EF$ISALPHA EQU ISALPHA$STRT ISALPHA$STRTC EQU $ call ma1toh mov a,l lxi h,0 cpi 'A' rc cpi 'Z'+1 ISALPHA$R000 EQU $+1-ISALPHA$STRT jc ISALPHA$L$ALYES cpi 'a' rc cpi 'z'+1 rnc ISALPHA$L$ALYES EQU $-ISALPHA$STRT inx h ret ISALPHA$END EQU $ DW 1 DW ISALPHA$R000 ISDIGIT$BEG EQU $-TPALOC DB 0 DW ISDIGIT$END-$-2 ISDIGIT$STRT EQU $ ISDIGIT$EF$ISDIGIT EQU ISDIGIT$STRT ISDIGIT$STRTC EQU $ call ma1toh mov a,l lxi h,0 cpi '0' rc cpi '9'+1 rnc inx h ret ISDIGIT$END EQU $ DW 0 STRLEN$BEG EQU $-TPALOC DB 0 DW STRLEN$END-$-2 STRLEN$STRT EQU $ STRLEN$EF$STRLEN EQU STRLEN$STRT STRLEN$STRTC EQU $ call ma1toh lxi d,-1 STRLEN$L$STRLLP EQU $-STRLEN$STRT mov a,m ora a inx h inx d STRLEN$R000 EQU $+1-STRLEN$STRT jnz STRLEN$L$STRLLP xchg ret STRLEN$END EQU $ DW 1 DW STRLEN$R000 STRCAT$BEG EQU $-TPALOC DB 0 DW STRCAT$END-$-2 STRCAT$STRT EQU $ STRCAT$EF$STRCAT EQU STRCAT$STRT STRCAT$STRTC EQU $ call ma1toh xchg call ma2toh push d STRCAT$L$CATLP EQU $-STRCAT$STRT ldax d ora a inx d STRCAT$R000 EQU $+1-STRCAT$STRT jnz STRCAT$L$CATLP dcx d STRCAT$L$CATLP2 EQU $-STRCAT$STRT mov a,m stax d inx d inx h ora a STRCAT$R001 EQU $+1-STRCAT$STRT jnz STRCAT$L$CATLP2 pop h ret STRCAT$END EQU $ DW 2 DW STRCAT$R000 DW STRCAT$R001 STRCIEQ$BEG EQU $-TPALOC DB 0 DW STRCIEQ$END-$-2 STRCIEQ$STRT EQU $ STRCIEQ$EF$STRCIEQ EQU STRCIEQ$STRT STRCIEQ$STRTC EQU $ call ma1toh xchg call ma2toh push b STRCIEQ$L$STRCIL EQU $-STRCIEQ$STRT mov a,m ora a STRCIEQ$R000 EQU $+1-STRCIEQ$STRT jz STRCIEQ$L$TEST2ND STRCIEQ$R001 EQU $+1-STRCIEQ$STRT call STRCIEQ$L$UCASE mov b,a ldax d STRCIEQ$R002 EQU $+1-STRCIEQ$STRT call STRCIEQ$L$UCASE cmp b inx h inx d STRCIEQ$R003 EQU $+1-STRCIEQ$STRT jz STRCIEQ$L$STRCIL STRCIEQ$L$NOTEQ EQU $-STRCIEQ$STRT lxi h,0 pop b ret STRCIEQ$L$TEST2ND EQU $-STRCIEQ$STRT ldax d ora a STRCIEQ$R004 EQU $+1-STRCIEQ$STRT jnz STRCIEQ$L$NOTEQ lxi h,1 pop b ret STRCIEQ$L$UCASE EQU $-STRCIEQ$STRT cpi 'a' rc cpi 'z'+1 rnc ani 5fH ret STRCIEQ$END EQU $ DW 5 DW STRCIEQ$R000 DW STRCIEQ$R001 DW STRCIEQ$R002 DW STRCIEQ$R003 DW STRCIEQ$R004 END$CRL EQU $-TPALOC SECTORS$ EQU ($-TPALOC)/256+1 ;USE FOR "SAVE" !. ORG TPALOC ; Directory: DB 'BDOSD','E'+80H DW BDOSDE$BEG DB 'GDSBDAT','E'+80H DW GDSBDATE$BEG DB 'GDSADAT','E'+80H DW GDSADATE$BEG DB 'ASCDAT','E'+80H DW ASCDATE$BEG DB 'FILEDAT','E'+80H DW FILEDATE$BEG DB 'STRCP','Y'+80H DW STRCPY$BEG DB 'TOUPPE','R'+80H DW TOUPPER$BEG DB 'TOLOWE','R'+80H DW TOLOWER$BEG DB 'ISSPAC','E'+80H DW ISSPACE$BEG DB 'ISALPH','A'+80H DW ISALPHA$BEG DB 'ISDIGI','T'+80H DW ISDIGIT$BEG DB 'STRLE','N'+80H DW STRLEN$BEG DB 'STRCA','T'+80H DW STRCAT$BEG DB 'STRCIE','Q'+80H DW STRCIEQ$BEG DB 80H DW END$CRL END