; NSWP VERS 2.05.26 as of 03/02/86 ; BY DISZILOG 12/03/85 (VER .21,.22 LOST) ; .Z80 ; CR EQU 0DH LF EQU 0AH ; BDOS EQU 5 RSTDSK EQU 13 ; RESET DISK SYSTEM (HERE: RESET DMA) SELDSK EQU 14 ; SELECT DISK FOPEN EQU 15 ; OPEN FILE FCLOSE EQU 16 ; CLOSE FILE SFIRST EQU 17 ; SEARCH FOR FIRST SNEXT EQU 18 ; SEARCH FOR NEXT FDELT EQU 19 ; FILE DELETE FREAD EQU 20 ; FILE READ FWRIT EQU 21 ; FILE WRITE FMAKE EQU 22 ; MAKE FILE FRENAM EQU 23 ; RENAME FILE GETDRV EQU 25 ; GET DRIVE SETDMA EQU 26 ; SET DMA ADDRESS SETATT EQU 30 ; SET ATTRIBUTE GSUSER EQU 32 ; GET/SET USER ; TDOS EQU 50H SABORT EQU 8 ; SET ABORT ADDRESS GETSER EQU 12 ; GET SERIAL NUMBER / PRIVILEGE STATUS COMPAT EQU 13 ; SET COMPATIBILITY FLAGS SNDCL EQU 18 ; SEND COMMAND LINE ; DFCB EQU 5CH DBUF EQU 80H STACK EQU 3C00H ; CSEG ; START: JP BEGIN ; MAXLIN::DB 24 ; REVON:: DS 7 REVOF:: DS 7 DB 'NSWP (c) 1983 by Dave Rand' ; BEGIN: LD SP,STACK ; SET UP LOCAL STACK LD A,(TDOS) ; CHECK IF RUNNING TURBODOS CP 0C3H JR Z,ISTURB ; SKIP IF TD... CALL ILPRT ; ELSE BARF DB CR,LF,7 'ERROR: TurboDOS ver 1.3 and up only!',CR,LF,0 RST 0 ; ISTURB: LD C,GETSER ; CHECK PRIV STATUS CALL TDOS BIT 7,B JR NZ,..ISP CALL ILPRT DB CR,LF,7 'NON-PRIVILEGED USER',CR,LF,0 RST 0 ; ..ISP: LD C,COMPAT LD E,0F8H ; SET COMPAT FLAGS CALL TDOS LD C,SABORT LD DE,LOOP ; SET ABORT ADDRESS CALL TDOS LD HL,(BDOS+1) ; GET BDOS ENTRY POINT DEC H ; PROTECT ZONE LD L,0 ; MAKE EVEN PAGE LD (RAMTOP),HL ; STORE AS END OF TPA LD C,GETDRV ; GET CURRENT DRIVE CALL BDOS LD (DRIVE1),A ; STORE IT AWAY LD (DRIVE2),A LD C,GSUSER ; GET CURRENT USER LD E,0FFH CALL BDOS LD (USER1),A ; STORE IT AWAY, TOO LD (USER2),A LD HL,DFCB+1 ; MOVE DEFAULT FCB... LD DE,FCB1+1 ; INTO INTERNAL FCB LD B,11 ; (11 BYTES) CALL MOVHDB LD A,'?' ; SET EXTENT BYTES LD (DE),A ; TO WILDCARD INC DE LD (DE),A INC DE LD (DE),A INC DE LD (DE),A LD HL,-1 ; INITIALIZE FILECOUNT LD (NMBFLS),HL ; AND FILE POINTER LD (FILNMB),HL CALL PRCMDL ; PROCESS COMMAND LINE CALL CRCRCT ; SET UP CRC LOOKUP TABLE RELOG: LD C,RSTDSK ; SET DMA TO 80H CALL BDOS CALL DSPBNR ; DISPLAY BANNER CALL GTBKSZ ; GET DRIVE'S BLOCK SIZE CALL ILPRT ; PRINT INFO DB 'Drive ',0 LD A,(USER2) ; GET USER INC A ; IF USER<>0FFH... JR NZ,.NALL ; THEN DISPLAY USER NUMBER LD A,'*' ; ELSE DISPLAY A "*" CALL PUTCH LD A,'?' ; BE SURE FCB BYTE 1 IS "?" JR .ALLU ; .NALL: DEC A PUSH AF LD E,A CALL LOGUSR POP AF LD L,A LD H,0 CALL HXDCNX XOR A .ALLU: LD (FCB1),A ; SET DRIVE FIELD LD A,(DRIVE2) ADD A,'A' CALL PUTCH CALL ILPRT DB ': ',0 LD HL,-1 LD (NMBFLS),HL ; INITIALIZE # OF FILES INC HL LD (FREEK),HL ; INITIALIZE FREESPACE LD (TOTALK),HL ; AND TOTAL FILESIZE CALL CALCFS ; CALCULATE FREE SPACE LD HL,STACK ; HL = BUFFER LD DE,FCB1 ; DE = FILENAME MATCH CALL WILDEX ; EXPAND WILDCARD INTO BUFFER LD A,L ; CHECK IF ANY FILES OR H DEC HL JR Z,.NFLSF ; NO FILES FOUND INC HL ; ELSE INCREMENT COUNT LD (NMBFLS),HL ; AND STORE CALL PRPBUF ; PRE-PROCESS BUFFER CALL SORTBF ; SORT FILENAME BUFFER CALL UNDUPE ; REMOVE DUPLICATES LD HL,(Y2C15) DEC HL LD (NMBFLS),HL .NFLSF: PUSH HL CALL PSTATS POP HL INC HL CALL CLCFPT LD (FILPTR),HL LD HL,0 LD (FILNMB),HL LD (TAGTOT),HL LD (TAGTO1),HL ; ; MAIN LOOP. COME HERE AFTER EVERY COMMAND. ; LOOP: LD SP,STACK ; RESET STACK LD A,(USER2) ; GET REQUESTED USER LD (USER3),A ; SAVE IT CALL LOGDUE ; LOG IT IN LD HL,(NMBFLS) ; CHECK NUMBER OF FILES INC HL LD A,L ; HAVE ANY? OR H JR NZ,HAVEFL ; YES, SKIP TO MAIN COMMAND ENTRY CALL ILPRT ; ELSE DISPLAY MESSAGE DB CR,LF,CR,LF DB 'No files.',0 CALL CIN ; ACCEPT ONLY L,S,X,Z COMMANDS CP 'X' JP Z,0 ; QUIT CP 'L' JP Z,LOGNEW CP 'S' JP Z,FREESP CP 'Z' JP Z,CHANGE LD A,7 CALL PUTCH JR LOOP ; ; COME HERE FOR MAIN COMMAND ACCEPTOR ; HAVEFL: CALL CRLF ; NEW LINE LD HL,(FILNMB) ; GET CURRNT FILE NUMBER CALL CLCFPT ; POINT TO FILENAME CALL DSPCFN ; DISPLAY IT WITH SIZE/STATUS CALL CIN ; GET A CHARACTER LD B,A ; MOVE CHAR INTO B LD HL,LOOP ; SET UP RETURN STACK PUSH HL LD HL,CMDTBL ; POINT TO COMMAND TABLE SRHCMD: LD A,(HL) ; GET COMMAND BYTE OR A ; IF ZERO JR Z,..ERR ; THEN COMMAND NOT FOUND CP B ; CHECK IF FOUND INC HL ; POINT TO ADDRESS JR Z,FNDCMD ; BRANCH IF FOUND INC HL ; ELSE POINT TO INC HL ; NEXT CHARACTER JR SRHCMD ; AND REPEAT ; FNDCMD: LD E,(HL) ; GET COMMAND ROUTINE ADDRESS INC HL LD D,(HL) PUSH DE ; GO TO COMMAND ROUTINE RET ; ..ERR: LD A,7 ; SOUND BELL IF ERROR JP PUTCH ; ; PRINT STATS ; PSTATS: PUSH HL CALL CLCTLK LD HL,(TOTALK) LD C,4 CALL HEXDEC CALL ILPRT DB 'K in ',0 POP HL INC HL LD C,4 CALL HEXDEC CALL ILPRT DB ' files. ',0 LD HL,(FREEK) LD C,4 CALL HEXDEC CALL ILPRT DB 'K free.',0 RET ; ; COMMAND TABLE - LETTER FOLLOWED BY ADDRESS ; CMDTBL: DB ' ' DW FORWRD DB CR DW FORWRD DB 'B' DW BAKWRD DB 'X' DW 0 ; QUIT DB 'S' DW FREESP DB 'D' DW DELETE DB 'T' DW TAGFLE DB 'U' DW UNTAGF DB 'V' DW VIEWFL DB 'P' DW PRINTF DB 'E' DW ERASEF DB 'L' DW LOGNEW DB 'C' DW COPYFL DB 'M' DW MASSCP DB 'A' DW TAGAGN DB 'R' DW RENAME DB 'F' DW FINDFL DB 'W' DW MASSTG DB 'Y' DW SETATR DB '?' DW HELPME DB 'Q' DW SQZUSQ DB 'Z' DW CHANGE DB 'G' DW GOEXEC DB 0 ; ; EXECUTE A COMMAND ; GOEXEC: LD HL,(FILNMB) CALL CLCFPT ; HL=FILENAME POINTER PUSH HL ; SAVE LD DE,8 ADD HL,DE ; POINT TO TYPE LD A,(HL) AND 7FH CP 'C' JR NZ,NOCOMF INC HL LD A,(HL) AND 7FH CP 'O' JR NZ,NOCOMF INC HL LD A,(HL) AND 7FH CP 'M' JR NZ,NOCOMF LD HL,80H LD (HL),'\' INC HL POP DE ; GET FP LD B,8 ; 8 CHARS MAX .CCL: LD A,(DE) ; GET A CHAR CP ' ' ; BLANK? JR Z,.CCE ; YES LD (HL),A INC HL INC DE DJNZ .CCL .CCE: XOR A LD (HL),A LD E,0FFH LD C,47 CALL 5 ; NOCOMF: CALL ILPRT DB ' not a .COM file',7,0 JP LOOP ; ; FORWARD A FILE ; FORWRD: LD HL,(FILNMB) INC HL A0346: LD (FILNMB),HL EX DE,HL LD HL,(NMBFLS) CALL CPHLDE JP NC,LOOP LD HL,0 LD (FILNMB),HL CALL CRLF JP LOOP ; ; BACKWARD A FILE ; BAKWRD: LD HL,(FILNMB) LD A,H OR L DEC HL LD (FILNMB),HL JP NZ,LOOP CALL CRLF LD HL,(NMBFLS) LD (FILNMB),HL JP LOOP ; ; CHANGE DRIVE ; CHANGE: CALL GETDR SUB 41H LD E,A PUSH DE LD C,26 LD D,DBUF CALL TDOS POP DE LD C,25 LD D,-1 PUSH DE CALL TDOS OR A JR Z,LOKOK CALL ILPRT DB CR,LF DB '-- DRIVE IN USE --',7,0 JP LOOP ; LOKOK: CALL ILPRT DB CR,LF DB 'Change disk, press RETURN to continue:',0 ..R?.: LD C,3 CALL BDOS CP CR LD A,7 JR Z,..RT. CALL PUTCH JR ..R?. ; ..RT.: LD C,25 POP DE INC D CALL TDOS JP LOOP ; GETDR: CALL ILPRT DB ' Which drive? ',0 CALL INPLN LD A,(LINET) CP 'A' JP C,LOOP CP 'P'+1 JP NC,LOOP RET ; ; DISPLAY FREE SPACE ; FREESP: CALL GETDR PUSH AF LD C,RSTDSK CALL BDOS LD A,(DRIVE2) LD B,A POP AF SUB 41H LD (DRIVE2),A PUSH BC PUSH AF CALL CRLF CALL GTBKSZ CALL CALCFS CALL CRLF LD HL,(FREEK) LD C,4 CALL HEXDEC CALL ILPRT DB 'K remaining on drive ',0 POP AF ADD A,'A' CALL PUTCH LD A,':' CALL PUTCH CALL CRLF POP BC LD A,B LD (DRIVE2),A CALL GTBKSZ JP LOOP ; ; SET ATTRIBUTES ; SETATR: CALL ILPRT DB ' Which attributes (2-4,R,G,A)? ',0 CALL INPLN LD HL,DSTFCB+1 LD B,11 A0419: LD (HL),0 INC HL DJNZ A0419 LD HL,LINEC LD A,(HL) OR A JP Z,LOOP INC HL LD (Y2C3D),HL A042C: LD HL,(Y2C3D) EX DE,HL CALL SKNBL EX DE,HL INC HL LD (Y2C3D),HL OR A JR Z,A0457 LD HL,ATTRS LD DE,DSTFCB+1 LD B,11 A0444: CP (HL) JR Z,A0451 INC HL INC DE DJNZ A0444 JR A042C ; A0451: LD A,80H LD (DE),A JR A042C ; A0457: LD A,2 JP A098F ; ATTRS: DB 'z234zzzzRGA' ; ; DELETE A FILE ; DELETE: CALL ILPRT DB ' Delete file? ',0 CALL CIN CP 'Y' JP NZ,LOOP LD HL,(FILNMB) CALL DELFHL JP LOOP ; ; DELETE FILE # IN HL ; DELFHL: CALL CLCFPT PUSH HL CALL SUBUP POP HL PUSH HL LD DE,DFCB+1 XOR A LD (DFCB),A LD B,11 CALL MOVHDB PUSH HL PUSH DE POP HL INC DE LD B,22 LD (HL),0 CALL MOVHDB LD E,0FFH CALL LOGUSR LD E,A POP HL PUSH DE LD E,(HL) CALL LOGUSR LD A,(DFCB+9) AND 80H JR Z,NOTRDO CALL ILPRT DB ' R/O. Delete? ',7,0 CALL CIN CP 'Y' JR Z,DELRDO POP DE POP HL RET ; ; DELETE R/O FILE ; DELRDO: LD A,(DFCB+9) AND 7FH LD (DFCB+9),A LD DE,DFCB CALL SATTRB NOTRDO: LD DE,DFCB CALL DELDE JR NZ,DLTD NTDLT: CALL ILPRT DB ' Can''t delete file',7,0 JP LOOP ; DLTD: POP DE CALL LOGUSR LD HL,(NMBFLS) LD DE,(FILNMB) OR A SBC HL,DE ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL PUSH HL POP BC POP HL PUSH HL LD DE,10H ADD HL,DE POP DE LD A,B OR C JR Z,A0523 A0519: LD A,(HL) LD (DE),A INC HL INC DE DEC BC LD A,B OR C JR NZ,A0519 A0523: LD HL,(NMBFLS) DEC HL LD (NMBFLS),HL EX DE,HL LD HL,(FILNMB) CALL CPHLDE RET C RET Z DEC HL LD (FILNMB),HL RET ; ; ERASE FILE ; ERASEF: CALL ILPRT DB CR,LF DB 'Erase Tagged or Untagged files (T/U)? ',0 CALL CIN CP 'T' JR Z,A0571 CP 'U' JP NZ,LOOP A0571: CP 'T' LD A,1 JR Z,A0579 XOR A A0579: LD (Y2C0C),A A057C: CALL ILPRT DB CR,LF DB 'Do you wish to be prompted (Y/N/A)? ',0 CALL CIN CP 3 JP Z,LOOP CP 'A' JP Z,LOOP CP 'N' JR Z,A05C2 CP 'Y' LD A,1 JR NZ,A057C JR A05C3 ; A05C2: XOR A A05C3: LD (Y2C33),A LD HL,0 A05C9: PUSH HL LD (FILNMB),HL CALL CLCFPT PUSH HL CALL ADDH12 LD A,(HL) AND 1 LD B,A LD A,(Y2C0C) CP B POP HL JR NZ,A0633 PUSH HL CALL ILPRT DB CR,LF DB 'Deleting ---> ',0 POP HL CALL A13DA LD A,(Y2C33) OR A JR Z,A0624 CALL ILPRT DB ' Delete (Y/N/A)? ',0 CALL CIN CP 'A' JR Z,A0647 CP 'Y' JR NZ,A0633 A0624: CALL A1598 JR Z,A0650 POP HL PUSH HL CALL DELFHL POP HL JR A0635 ; A0633: POP HL INC HL A0635: EX DE,HL LD HL,(NMBFLS) INC HL LD A,L OR H JR Z,A0647 DEC HL CALL CPHLDE EX DE,HL JP NC,A05C9 A0647: LD HL,0 LD (FILNMB),HL JP LOOP ; A0650: LD HL,0 LD (FILNMB),HL JP A0B55 ; ; ADD UP TAGGED FILES AND DISPLAY ; ADDUP: LD A,(HL) ; GET TAG FLAG LD (HL),1 ; SET TO TAGGED CP 1 ; IF ALREADY TAGGED JR Z,.TALRY ; THEN SKIP INC HL CALL CLCFSZ ; CALC FILE SIZE PUSH HL LD HL,(TAGTO1) ; ACCUMULATE 1K SIZE TOTAL ADD HL,DE LD (TAGTO1),HL POP HL EX DE,HL LD HL,(TAGTOT) ; ACCUMULATE CUR BLK TOTAL ADD HL,DE LD (TAGTOT),HL .TALRY: LD HL,(TAGTOT) LD C,4 CALL HEXDEC CALL ILPRT DB 'K (',0 LD HL,(TAGTO1) LD C,4 CALL HEXDEC CALL ILPRT DB 'K).',0 RET ; ; TAG FILE ; TAGFLE: CALL .MTGDF LD HL,(FILNMB) CALL CLCFPT CALL ADDH12 CALL ADDUP JP FORWRD ; .MTGDF: CALL ILPRT DB ' Tagged files = ',0 RET ; ; UNTAG FILE ; UNTAGF: CALL .MTGDF ; DISPLAY MESSAGE LD HL,(FILNMB) CALL CLCFPT CALL SUBUP ; SUBTRACT FILESIZE FROM TOTAL CALL .TALRY JP FORWRD ; SUBUP: CALL ADDH12 LD A,(HL) LD (HL),0 CP 1 RET NZ PUSH HL INC HL CALL CLCFSZ PUSH HL LD HL,(TAGTO1) OR A SBC HL,DE LD (TAGTO1),HL POP HL EX DE,HL LD HL,(TAGTOT) OR A SBC HL,DE LD (TAGTOT),HL POP HL RET ; ; LOG INTO NEW DRIVE, USER OR FILEMATCH ; LOGNEW: LD C,GETDRV ; GET DRIVE CALL BDOS LD E,A ; DRIVE TO E LD C,26 ; FLUSH LD D,80H ; UNCONDITIONAL CALL TDOS CALL ILPRT DB ' New drive/user/mask? ',0 CALL INPLN LD HL,LINEC LD A,(HL) OR A JP Z,LOOP INC HL LD (Y2C3D),HL CALL PARSDF LD A,(DFCB) OR A JR NZ,A072C LD A,(DRIVE2) INC A A072C: DEC A LD (DRIVE2),A LD A,(Y2C3A) CP 0FFH JR NZ,A0745 LD A,(LINET+1) CP '*' LD A,0FFH JR Z,A0745 LD A,(USER2) A0745: LD (USER2),A LD A,(DFCB+1) CP ' ' JR NZ,A075D LD HL,DFCB+1 LD DE,DFCB+2 LD B,10 LD (HL),'?' CALL MOVHDB A075D: LD HL,DFCB LD DE,FCB1 LD B,12 CALL MOVHDB CALL CRLF CALL CRLF JP RELOG ; A0771: PUSH HL XOR A LD (CRCFLG),A A0776: LD A,(HL) OR A JR Z,A0784 CP 'V' INC HL JR NZ,A0776 LD (CRCFLG),A A0784: POP HL RET ; A0786: CALL ILPRT DB CR,LF DB 'Illegal drive code.',0 JP LOOP ; A07A2: CALL A0771 LD A,(USER2) LD (Y2C3A),A LD A,(DRIVE2) LD (Y2C38),A LD A,(HL) CP '0' JR C,A0786 CP '9'+1 JR C,A07D2 CP 'A' JR C,A0786 CP 'P'+1 JR NC,A0786 SUB 'A' LD (Y2C38),A INC HL LD A,(HL) CP ':' RET Z OR A RET Z ; ; FOLLOWING CODE CALCULATES USER # ; A07D2: CP '*' JR Z,A0806 CP '0' RET C CP '9'+1 RET NC AND 0FH LD C,A CALL USRPAT ; MULTIPLY LD B,A INC HL LD A,(HL) CP ':' JR Z,A07FF OR A JR Z,A07FF CP '0' JR C,A07FF CP '9'+1 JR NC,A07FF SUB '0' ADD A,B CP 32 RET NC LD (Y2C3A),A RET ; A07FF: LD A,C LD (Y2C3A),A RET ; A0806: LD A,0FFH LD (Y2C3A),A RET ; ; GET TAGGED/UNTAGGED RESPONSE AND SET A ; GTUR.: CALL ILPRT DB CR,LF DB 'Tagged or Untagged files (T/U)? ',0 CALL CIN CP 'T' JR Z,.GTURT CP 'U' JP NZ,LOOP XOR A JR .GTURS ; .GTURT: LD A,1 .GTURS: LD (.TOTU.),A RET ; ; LINE INPUT ; INPLN: LD DE,LINE LD C,10 CALL BDOS LD HL,LINEC PUSH HL LD E,(HL) INC HL LD D,0 ADD HL,DE LD (HL),0 INC HL LD (HL),B POP HL A0822: INC HL LD A,(HL) OR A RET Z CALL CAPS LD (HL),A JR A0822 ; A082D: CALL ILPRT DB ' Copy to drive/user? ',0 CALL INPLN LD HL,LINEC LD A,(HL) OR A JP Z,LOOP PUSH HL LD C,RSTDSK CALL BDOS CALL GTBKSZ POP HL INC HL CALL A07A2 LD A,(Y2C43) OR A RET NZ A0865: LD A,(USER3) LD B,A LD A,(Y2C3A) CP 0FFH JR Z,A0873 CP B RET NZ A0873: LD A,(Y2C38) LD B,A LD A,(DRIVE2) CP B RET NZ CALL ILPRT DB CR,LF DB 'Can''t copy to same drive and user.',0 JP LOOP ; ; COPY A FILE ; COPYFL: LD HL,(FILNMB) CALL CLCFPT PUSH HL XOR A LD (SRCFCB),A LD DE,SRCFCB+1 LD B,11 CALL MOVHDB LD A,(HL) LD (USER3),A CALL ILPRT DB ' Copy to (filespec)? ',0 CALL INPLN LD HL,LINEC LD A,(HL) OR A JP Z,LOOP INC HL LD (Y2C3D),HL CALL PARSDF LD HL,(Y2C3D) CALL A0771 LD A,(DFCB+1) CP ' ' JR NZ,A090A LD HL,SRCFCB+1 LD DE,DFCB+1 LD B,11 A0900: LD A,(HL) AND 7FH LD (DE),A INC HL INC DE DJNZ A0900 A090A: LD A,(DFCB) DEC A LD (Y2C38),A LD HL,SRCFCB+1 LD DE,DFCB+1 CALL A100E JR NZ,A0920 CALL A0865 A0920: LD HL,DFCB+1 LD DE,SRCFCB+1 LD B,11 A0928: LD A,(DE) AND 80H OR (HL) LD (HL),A INC HL INC DE DJNZ A0928 LD HL,DFCB LD DE,DSTFCB LD B,12 CALL MOVHDB LD A,1 LD (.CPFL),A POP HL CALL A0DB4 JP LOOP ; ; SQ/USQ ENTRY POINT ; SQZUSQ: CALL ILPRT DB CR,LF DB ' Squeeze, Unsqueeze or Reverse (S,U,R)? ',0 CALL CIN LD (Y2C00),A CP 'S' JR Z,A0989 CP 'U' JR Z,A0989 CP 'R' JP NZ,LOOP A0989: LD A,1 JR A098F ; ; MOVE FILES ; MASSCP: XOR A A098F: LD (Y2C43),A PUSH AF CALL GTUR. ; ASK TAG/UNTAG CALL CRLF LD A,(USER2) LD (USER3),A POP AF CP 2 JR Z,A09A5 CALL A082D A09A5: LD HL,0 A09A8: PUSH HL CALL CLCFPT PUSH HL CALL ADDH12 LD A,(HL) AND 1 CP 1 .TOTU. EQU $-1 ; T/U FLAG DEC HL LD B,(HL) POP HL JP NZ,.NTTGD ; SKIP IF NOT TAGGED PUSH HL LD A,B LD (USER3),A LD A,(Y2C43) OR A JR NZ,A0A08 LD A,(DRIVE2) LD B,A LD A,(Y2C38) CP B JR NZ,A0A08 LD A,(USER3) LD B,A LD A,(Y2C3A) CP B JR NZ,A0A08 CALL ILPRT DB CR,LF DB 'Skipping, same drive & user --> ',0 POP HL CALL A13DA JP .NTTGD ; A0A08: LD A,(Y2C43) CP 1 JR Z,A0A2C CP 2 JR Z,A0A43 CALL ILPRT DB CR,LF DB 'Copying --> ',0 JR A0A57 ; A0A2C: CALL ILPRT DB CR,LF DB 'SQ/USQ --> ',0 JR A0A57 ; A0A43: CALL ILPRT DB CR,LF DB 'Setting --> ',0 A0A57: POP HL PUSH HL CALL A13DA CALL ILPRT DB ' to ',0 A0A64: LD A,(Y2C43) CP 2 JR NZ,A0AE2 LD HL,DSTFCB+1 LD DE,T0AC2 LD B,4 A0A74: LD A,(HL) OR A CALL NZ,A0AA3 INC HL INC DE INC DE INC DE DEC B DJNZ A0A74 LD HL,DSTFCT LD DE,T0ACE LD A,(HL) OR A CALL Z,A0ABA LD DE,T0AD3 LD B,3 A0A91: LD A,(HL) OR A CALL NZ,A0ABA INC HL INC DE INC DE INC DE INC DE INC DE DJNZ A0A91 JR A0B1E ; A0AA3: PUSH HL PUSH DE PUSH BC LD B,3 A0AA8: EX DE,HL A0AA9: LD A,(HL) PUSH HL PUSH BC CALL PUTCH POP BC POP HL INC HL DJNZ A0AA9 POP BC POP DE POP HL RET ; A0ABA: PUSH HL PUSH DE PUSH BC LD B,5 JR A0AA8 ; T0AC2: DB ' F 2 3 4 ' T0ACE: DB ' R/W ' T0AD3: DB ' R/O GLB ARC ' ; A0AE2: LD A,(Y2C3A) CP 0FFH JR NZ,A0AF5 LD A,(USER3) A0AF5: LD L,A LD H,0 CP 10 LD C,1 JR C,A0B00 INC C A0B00: CALL HEXDEC LD A,(Y2C38) ADD A,'A' CALL PUTCH LD A,':' CALL PUTCH LD A,(CRCFLG) OR A JR Z,A0B1E CALL ILPRT DB ' with CRC',0 A0B1E: POP HL PUSH HL LD A,(Y2C43) CP 1 JR Z,A0B33 CP 2 JR Z,A0B6D CALL A0DBA JR A0B36 ; A0B33: CALL A0C33 A0B36: POP HL CALL SUBUP LD A,(.TOTU.) DEC A JR NZ,.NTTGD LD (HL),2 .NTTGD: CALL A1598 JR Z,A0B55 POP HL INC HL EX DE,HL LD HL,(NMBFLS) CALL CPHLDE EX DE,HL JP NC,A09A8 CALL CRLF JR A0B6A ; A0B55: CALL ILPRT DB CR,LF DB '-- Aborted --',7,0 A0B6A: JP LOOP ; A0B6D: PUSH HL LD DE,SRCFCB XOR A LD (DE),A INC DE LD B,11 CALL MOVHDB LD A,(HL) PUSH AF PUSH DE POP HL INC DE LD (HL),0 LD B,22 CALL MOVHDB POP AF LD (USER3),A CALL LOGDUE LD HL,SRCFCB+1 LD DE,DSTFCB+1 LD B,11 A0B94: LD A,(HL) AND 7FH LD (HL),A LD A,(DE) OR (HL) LD (HL),A INC HL INC DE DJNZ A0B94 LD DE,SRCFCB CALL SATTRB LD HL,SRCFCB+1 POP DE LD B,11 CALL MOVHDB JR A0B36 ; ; TAG FILES AGAIN AFTER COPY ; TAGAGN: LD HL,0 A0BB8: PUSH HL CALL CLCFPT PUSH HL CALL ADDH12 LD A,(HL) CP 2 JR NZ,A0BEC CALL ILPRT DB CR,LF DB 'Retagging --> ',0 POP HL PUSH HL CALL A13DA LD A,' ' CALL PUTCH POP HL CALL ADDH12 CALL ADDUP PUSH HL A0BEC: POP HL POP HL INC HL EX DE,HL LD HL,(NMBFLS) CALL CPHLDE EX DE,HL JR NC,A0BB8 JP LOOP ; A0BFD: CALL A1FED OR A RET NZ PUSH AF PUSH DE PUSH HL CALL ILPRT DB '(',0 A0C0A: POP HL PUSH HL A0C0C: LD A,(HL) INC HL OR A JR Z,A0C1A PUSH HL CALL PUTCH POP HL JR A0C0C ; A0C1A: CALL ILPRT DB ')',0 POP HL POP DE POP AF RET ; ; PRINT B BYTES OF FILE NAME ; PFNBYT: LD A,(HL) CP ' ' PUSH HL PUSH BC CALL NZ,PUTCH POP BC POP HL INC HL DJNZ PFNBYT RET ; A0C33: LD (Y2C01),HL CALL A15B8 CALL A0D6E EX DE,HL LD HL,(FILPTR) LD (Y2C21),HL LD HL,(Y2C01) JP NZ,A0DAC EX DE,HL LD DE,0FF76H CALL CPHLDE JR NZ,A0C66 LD HL,(Y2C01) LD A,(Y2C00) CP 'U' JP Z,A0CDD CP 'R' JP Z,A0CDD JP A0DAC ; A0C66: LD HL,(Y2C01) LD A,(Y2C00) CP 'R' JR Z,A0C76 CP 'U' JP Z,A0DAC A0C76: LD HL,Y2EED CALL A2160 OR A LD HL,(Y2C01) JP NZ,A0DAC CALL A16C0 LD HL,SRCFCB LD DE,DSTFCB LD B,0CH LD (HL),0 CALL MOVHDB LD HL,DSTFCT LD A,(HL) AND 7FH CP ' ' JR NZ,A0CA3 LD (HL),'Q' INC HL LD (HL),'Q' A0CA3: INC HL LD (HL),'Q' CALL ILPRT DB '(',0 A0CAB: LD HL,DSTFCB+1 LD B,8 CALL PFNBYT PUSH HL LD A,'.' CALL PUTCH POP HL LD B,3 CALL PFNBYT CALL ILPRT DB ')',0 CALL A1625 LD HL,(Y2C01) CALL A15B8 LD HL,SRCFCB CALL A2576 CALL A1739 CALL CLSDST JP A16C0 ; A0CDD: LD HL,Y2EED CALL A0BFD OR A JR Z,A0CFC CALL ILPRT DB ' Not a SQ file.',0 RET ; A0CFC: LD (Y2C3D),HL EX DE,HL LD (Y2C41),HL LD A,(Y2C3A) PUSH AF CALL A1B9C POP AF LD (Y2C3A),A LD HL,DFCB LD DE,DSTFCB LD (HL),0 LD B,0CH CALL MOVHDB CALL A1625 LD HL,0 A0D21: PUSH HL CALL A20BA POP HL JR NZ,A0D35 LD E,A LD D,0 ADD HL,DE PUSH HL CALL A171C POP HL JR A0D21 ; A0D35: EX DE,HL LD HL,(Y2C41) CALL CPHLDE PUSH AF CALL A1739 CALL CLSDST CALL A16C0 POP AF RET Z CALL ILPRT DB CR,LF DB 'ERROR - Checksum error in file ',0 RET ; A0D6E: CALL A1773 RET NZ PUSH AF CALL A1773 LD H,A POP AF LD L,A CP A RET ; A0D7B: CALL A0D6E RET Z CALL ILPRT DB CR,LF DB 'Premature EOF on file... aborted.',0 JP LOOP ; A0DAC: PUSH HL CALL A16C0 POP HL JR A0DBA ; A0DB4: CALL A15B8 JR A0DE3 ; A0DBA: LD A,(Y2C38) LD B,A LD A,(DRIVE2) CP B JR NZ,A0DD1 LD A,(USER3) LD B,A LD A,(Y2C3A) CP 0FFH RET Z CP B RET Z A0DD1: CALL A15B8 LD HL,SRCFCB LD DE,DSTFCB LD B,0CH CALL MOVHDB XOR A LD (DSTFCB),A A0DE3: LD HL,0 LD (CRCACC),HL CALL A1625 CALL LOGDUE LD HL,(FILPTR) LD (Y2C34),HL A0DF5: PUSH HL EX DE,HL LD C,SETDMA CALL BDOS LD DE,SRCFCB LD C,FREAD CALL BDOS POP HL OR A JR NZ,A0E1E LD DE,80H ADD HL,DE LD (Y2C34),HL EX DE,HL LD HL,(RAMTOP) CALL CPHLDE EX DE,HL CALL C,A0ED5 JR A0DF5 ; A0E1E: CALL A0ED5 CALL CLSDST CALL A16C0 LD A,(CRCFLG) OR A RET Z LD HL,.CPFL LD A,(HL) LD (HL),0 OR A CALL NZ,CRLF CALL ILPRT DB ' Verifying... ',0 CALL A1604 LD HL,Y2C76 LD DE,Y2C77 LD B,21 LD (HL),0 CALL MOVHDB LD DE,DSTFCB LD C,FOPEN CALL BDOS INC A JR NZ,A0E74 CALL ILPRT DB ' Can''t open file!',0 JP LOOP ; A0E74: LD DE,80H LD C,SETDMA CALL BDOS LD HL,(CRCACC) LD (SRCCRC),HL LD HL,0 LD (CRCACC),HL .VFYLP: LD C,FREAD LD DE,DSTFCB CALL BDOS OR A JR NZ,VFYDUN LD HL,DBUF LD DE,100H CALL CRCBLK JR .VFYLP ; VFYDUN: CALL CLSDST ; CLOSE DESTINATION FILE LD DE,(SRCCRC) LD HL,(CRCACC) CALL CPHLDE JR Z,.VFYOK CALL ILPRT DB 'verify error',7,0 JP LOOP ; .VFYOK: CALL ILPRT DB 'file ok.',0 RET ; A0ED5: LD DE,(Y2C34) LD HL,(FILPTR) CALL CPHLDE RET Z CALL CRCBLK CALL A1604 LD HL,(FILPTR) A0EE9: PUSH HL EX DE,HL LD C,SETDMA CALL BDOS LD DE,DSTFCB LD C,FWRIT CALL BDOS POP HL OR A JR NZ,A0F16 LD DE,80H ADD HL,DE LD DE,(Y2C34) CALL CPHLDE JR NZ,A0EE9 CALL LOGDUE LD HL,(FILPTR) LD (Y2C34),HL RET ; A0F16: LD C,GETDRV ; GET DRIVE CALL BDOS LD E,A ; DRIVE TO E LD C,26 ; FLUSH LD D,80H ; UNCONDITIONAL CALL TDOS CALL ILPRT DB CR,LF DB 'Destination disk full.',0 CALL CLSDST CALL A16C0 CALL A16E7 JP LOOP ; FINDFL: CALL ILPRT DB ' Find what? ',0 CALL INPLN LD HL,LINET LD (Y2C3D),HL CALL A1B9C LD HL,DFCB+1 LD A,(HL) CP ' ' JP Z,LOOP LD B,11 A0F6D: LD A,(HL) CP ' ' JR NZ,A0F75 LD (HL),'?' A0F75: INC HL DJNZ A0F6D CALL ILPRT DB CR,LF,0 LD HL,-1 CALL A0FEF JP NZ,LOOP LD (FILNMB),HL JP LOOP ; MASSTG: CALL ILPRT DB ' Tag what? ',0 CALL INPLN LD HL,LINET LD (Y2C3D),HL CALL A1B9C LD HL,DFCB+1 LD A,(HL) CP ' ' JP Z,LOOP CALL ILPRT DB CR,LF,0 LD HL,-1 A0FBD: CALL A0FEF JP NZ,LOOP PUSH HL CALL ILPRT DB CR,LF DB 'Tagging --> ',0 POP HL PUSH HL CALL CLCFPT PUSH HL CALL A13DA LD A,' ' CALL PUTCH POP HL CALL ADDH12 CALL ADDUP POP HL JR A0FBD ; A0FEF: INC HL EX DE,HL LD HL,(NMBFLS) CALL CPHLDE JR C,A100A EX DE,HL PUSH HL CALL CLCFPT LD DE,5DH CALL A100E POP HL RET Z JR A0FEF ; A100A: LD A,1 OR A RET ; A100E: LD B,11 EX DE,HL A1011: LD A,(HL) CP '?' JR Z,A101C LD A,(DE) AND 7FH CP (HL) RET NZ A101C: INC HL INC DE DJNZ A1011 RET ; RENAME: LD HL,(FILNMB) CALL CLCFPT LD DE,11 ADD HL,DE LD A,(HL) LD (USER3),A CALL ILPRT DB ' New name, or *? ',0 CALL INPLN LD HL,LINET LD (Y2C3D),HL LD HL,DFCB+16 PUSH HL CALL PARSFN POP HL INC HL LD A,(HL) CP ' ' JP Z,LOOP LD B,11 A1061: CP '?' JP Z,RENWIL INC HL DJNZ A1061 LD A,(Y2C3A) CP 0FFH JR NZ,A1076 LD A,(USER3) A1076: LD (HL),A LD HL,(FILNMB) CALL CLCFPT CALL A10B9 CP '.' JR NZ,A108D LD C,RSTDSK CALL BDOS CALL GTBKSZ A108D: LD HL,(FILNMB) PUSH HL LD HL,(NMBFLS) INC HL LD (NMBFLS),HL CALL SORTBF CALL UNDUPE LD HL,(Y2C15) DEC HL LD (NMBFLS),HL EX DE,HL POP HL LD (FILNMB),HL CALL CPHLDE JP C,LOOP LD HL,0 LD (FILNMB),HL JP LOOP ; A10B9: PUSH HL ; ANYTHING MISSING BELOW HERE????? LD (Y2C38),A LD DE,DFCB XOR A LD (DFCB),A INC DE LD B,0BH CALL MOVHDB LD B,4 XOR A A10D0: LD (DE),A INC DE DJNZ A10D0 CALL LOGDUE LD A,(DFCB+9) AND 80H JR Z,A10F9 LD A,(DFCB+9) AND 7FH LD (DFCB+9),A LD A,(DFCB+25) AND 7FH LD (DFCB+25),A LD DE,DFCB CALL SATTRB A10F9: LD A,(Y2C3A) CP 0FFH LD E,A LD A,(USER3) JR NZ,A1106 LD E,A A1106: CALL LOGUSR LD HL,6DH LD DE,SRCFCB+1 LD B,0BH CALL MOVHDB XOR A LD (SRCFCB),A CALL A15AB LD DE,SRCFCB LD HL,(FILPTR) CALL WILDEX LD A,L OR H JR Z,A1152 CALL ILPRT DB CR,LF DB 'Destination file exists!',0 LD C,RSTDSK CALL BDOS CALL GTBKSZ JP LOOP ; A1152: LD A,(Y2C3A) CP 0FFH JR Z,A1162 LD B,A LD A,(USER3) CP B JR NZ,DIF.US A1162: LD A,(USER3) LD E,A CALL LOGUSR LD E,0FFH CALL LOGUSR PUSH AF LD DE,DFCB LD C,FRENAM CALL BDOS POP AF LD E,A CALL LOGUSR XOR A A117D: POP DE PUSH AF LD HL,6DH LD B,12 CALL MOVHDB POP AF CP A RET ; DIF.US: CALL ILPRT DB CR,LF,LF,7 DB 'ERROR: Cannot rename file to different user' DB CR,LF,0 JP LOOP ; WILDEX: PUSH HL PUSH DE LD C,SETDMA LD DE,DBUF CALL BDOS POP DE PUSH DE LD C,SFIRST CALL BDOS INC A POP DE POP HL LD BC,0 JR NZ,GETFLN LD HL,0 RET ; GETFLN: PUSH DE PUSH BC PUSH HL DEC A ADD A,A ADD A,A ADD A,A ADD A,A ADD A,A LD HL,DBUF ADD A,L LD L,A POP DE LD B,32 CALL MOVHDB PUSH DE INC D LD HL,(RAMTOP) CALL CPHLDE JR NC,NOTOM CALL ILPRT DB CR,LF DB 'OUT OF MEMORY?',0 RST 0 ; NOTOM: POP DE PUSH DE POP HL POP BC INC BC POP DE PUSH DE PUSH BC PUSH HL LD C,SNEXT CALL BDOS INC A POP HL POP BC POP DE JR NZ,GETFLN LD L,C LD H,B RET ; ; WILDCARD RENAME ; RENWIL: CALL ILPRT DB CR,LF,CR,LF DB 'Old name? ',0 CALL INPLN LD HL,LINET LD (Y2C3D),HL LD HL,FCB0 CALL PARSFN LD A,(FCB0+1) CP ' ' JP Z,LOOP LD A,(Y2C3A) LD (Y2C0C),A CALL ILPRT DB CR,LF DB 'New name? ',0 CALL INPLN LD HL,LINET LD (Y2C3D),HL LD HL,DSTFCB CALL PARSFN LD A,(DSTFCB+1) CP ' ' JP Z,LOOP CALL CRLF LD HL,0 A1312: PUSH HL CALL CLCFPT PUSH HL LD DE,FCB0+1 CALL A1385 JR NZ,A1362 CALL ILPRT DB CR,LF DB 'Renaming --> ',0 POP HL PUSH HL CALL A13DA POP HL PUSH HL LD DE,11 ADD HL,DE LD A,(HL) LD (USER3),A CALL ILPRT DB ' to ',0 POP HL PUSH HL CALL A13B2 LD HL,6DH CALL A13DA POP HL CALL A10B9 LD B,A LD A,(D1374) OR B LD (D1374),A PUSH HL A1362: POP HL POP HL INC HL EX DE,HL LD HL,(NMBFLS) CALL CPHLDE EX DE,HL JR NC,A1312 CALL CRLF LD A,0 D1374 EQU $-1 CP '.' JP NZ,A108D LD C,RSTDSK CALL BDOS CALL GTBKSZ JP A108D ; A1385: LD A,(HL) CP 0E5H JR Z,A13AF PUSH HL LD BC,11 ADD HL,BC LD B,(HL) POP HL LD A,(Y2C0C) CP 0FFH JR Z,A139C CP B RET NZ A139C: LD A,(DE) CP 03FH JR Z,A13A8 LD B,A LD A,7FH AND (HL) CP B RET NZ A13A8: INC HL INC DE DEC C JR NZ,A139C RET ; A13AF: XOR A CPL RET ; A13B2: LD DE,DSTFCB+1 LD BC,6DH LD A,0BH A13BA: PUSH AF LD A,(DE) CP 03FH JR NZ,A13C4 LD A,(HL) AND 7FH A13C4: LD (BC),A INC HL INC DE INC BC POP AF DEC A JR NZ,A13BA LD A,(Y2C3A) CP 0FFH JR NZ,A13D8 LD A,(USER3) A13D8: LD (BC),A RET ; A13DA: PUSH HL LD DE,11 ADD HL,DE LD L,(HL) LD H,0 LD A,L CP 10 LD C,1 JR C,A13F5 INC C A13F5: PUSH BC CALL HEXDEC LD A,(DRIVE2) ADD A,41H CALL PUTCH LD A,':' CALL PUTCH POP BC LD A,C CP 2 JR Z,A140A LD A,' ' CALL PUTCH A140A: LD B,8 POP HL CALL A1460 PUSH HL LD A,'.' CALL PUTCH POP HL LD B,3 JR A1460 ; ; DISPLAY CURRENT FILE NAME ; DSPCFN: PUSH HL LD HL,(FILNMB) INC HL LD C,4 CALL HEXDEC CALL ILPRT DB '. ',0 POP HL CALL A13DA INC HL LD A,(HL) PUSH AF INC HL PUSH HL LD A,' ' CALL PUTCH POP HL CALL CLCFSZ LD C,4 CALL HEXDEC CALL ILPRT DB 'K :',0 POP AF OR A LD C,' ' JR Z,A145B CP 1 LD C,'*' JR Z,A145B LD C,'#' A145B: LD A,C JP PUTCH ; A1460: PUSH BC PUSH HL LD A,(HL) CALL PUTCH POP HL POP BC INC HL DJNZ A1460 RET ; PRINTF: CALL CRLF LD A,5 LD (Y2C3C),A JR A14C9 ; VIEWFL: CALL CRLF XOR A LD (Y2C3C),A INC A LD (Y2C32),A A1484: CALL ILPRT DB 'Press ^X to abort, L to advance a line, cr to advance ' DB 'a page.',CR,LF,0 LD A,2 A14C9: LD (Y2C3B),A LD HL,(FILNMB) CALL CLCFPT CALL A15B8 CALL A0D7B LD DE,0FF76H CALL CPHLDE LD HL,A1773 JR NZ,A14FD LD HL,(FILPTR) LD (Y2C21),HL LD HL,Y2EED CALL A0BFD OR A JR NZ,A14FD CALL CRLF LD HL,A20BA JR A1505 ; A14FD: PUSH HL LD HL,(FILPTR) LD (Y2C21),HL POP HL A1505: LD (D151B),HL A1508: CALL A15A4 CP 'X'-40H JR Z,A1575 CP 3 JR Z,A1575 CP 'S'-40H JR Z,A157B CALL A1773 D151B EQU $-2 JR NZ,A1575 CP 'Z'-40H JR Z,A1575 AND 7FH LD E,A CP CR JR NZ,A1534 LD A,(Y2C32) INC A LD (Y2C32),A A1534: LD A,(Y2C3B) LD C,A CALL BDOS LD A,(Y2C3C) OR A JR NZ,A1508 LD A,(Y2C32) LD B,A LD A,(MAXLIN) CP B JR NZ,A1508 CALL A1590 CP 04CH JR Z,A156B CP 06CH JR Z,A156B CP 018H JR Z,A1575 CP 03H JR Z,A1575 XOR A LD (Y2C32),A JR A1508 ; A156B: LD A,(Y2C32) DEC A LD (Y2C32),A JR A1508 ; A1575: CALL A16C0 LD A,(Y2C3C) ; GET FLAG CP 5 ; PRINTER? JP NZ,LOOP ; NO, GO BACK LD C,28 ; ELSE SIGNAL EOP CALL TDOS JP LOOP ; A157B: CALL A1590 JR A1508 ; CONDIN: LD C,11 CALL BDOS OR A RET Z CIN: LD C,1 CALL BDOS JP CAPS ; A1590: CALL A15A4 OR A JR Z,A1590 RET ; A1598: CALL CONDIN CP 3 RET Z CALL CAPS CP 58H RET ; A15A4: LD E,0FFH LD C,6 JP BDOS ; A15AB: LD HL,Y2C50 LD DE,Y2C51 LD B,20 LD (HL),0 JP MOVHDB ; A15B8: LD DE,SRCFCB XOR A LD (SRCFCB),A INC DE LD B,11 CALL MOVHDB LD A,(HL) PUSH AF CALL A15AB POP AF LD (USER3),A CALL LOGDUE LD HL,(FILPTR) LD (Y2C21),HL LD (Y2C1F),HL LD DE,SRCFCB LD C,FOPEN CALL BDOS INC A RET NZ CALL ILPRT DB CR,LF DB 'Can''t open file!',0 JP LOOP ; A1604: LD A,(Y2C38) LD E,A LD C,SELDSK CALL BDOS LD A,(Y2C3A) LOGUSA: LD E,A LOGUSR: LD C,GSUSER JP BDOS ; ; LOG INTO ENTRY DU: ; LOGDUE: LD A,(DRIVE2) LD E,A LD C,SELDSK CALL BDOS LD A,(USER3) JR LOGUSA ; A1625: LD HL,(FILPTR) LD DE,1400H ADD HL,DE LD (Y2C25),HL LD (Y2C23),HL LD DE,1000H ADD HL,DE LD (Y2C27),HL CALL A1604 LD DE,DSTFCB PUSH DE LD A,(DSTFCT) AND 7FH LD (DSTFCT),A CALL A16B2 POP DE PUSH DE LD C,FOPEN CALL BDOS INC A JR Z,A167E POP DE PUSH DE LD C,FCLOSE CALL BDOS LD A,(DSTFCT) AND 80H JR Z,A1677 LD A,(DSTFCT) AND 7FH LD (DSTFCT),A CALL A16B2 POP DE PUSH DE CALL SATTRB A1677: POP DE PUSH DE CALL DELDE JP Z,NTDLT CP 4 JR Z,A167E LD HL,.CPFL LD A,(HL) LD (HL),0 OR A CALL NZ,CRLF CALL ILPRT DB ' (D)',0 A167E: CALL A16B2 POP DE LD C,FMAKE CALL BDOS INC A RET NZ CALL ILPRT DB CR,LF DB 'Destination disk directory full.',0 JP LOOP ; A16B2: LD HL,Y2C76 LD DE,Y2C77 LD B,22 LD (HL),0 JP MOVHDB ; A16C0: CALL LOGDUE LD DE,SRCFCB LD C,FCLOSE CALL BDOS INC A RET NZ A16CD: CALL ILPRT DB CR,LF DB 'Can''t close file!',0 JP LOOP ; A16E7: CALL A1604 CALL A16B2 LD DE,DSTFCB CALL DELDE RET NZ JP NTDLT ; CLSDST: CALL A1604 LD DE,DSTFCB LD C,FCLOSE CALL BDOS INC A JR Z,A16CD LD HL,DSTFCT LD A,(SRCFCT) AND 80H JR Z,.CGLO SET 7,(HL) .CGLO: LD A,(SRCFCT+1) AND 80H JR Z,.DSET INC HL SET 7,(HL) .DSET: LD DE,DSTFCB SATTRB: LD C,SETATT ; ATTEMPT TO SET ATTRIBUTE CALL BDOS OR A RET Z ; OK CALL ILPRT ; ELSE REPORT ERROR DB ' -- unable to set attributes --',7,0 RET ; A171C: LD DE,(Y2C27) LD HL,(Y2C23) LD B,A CALL CPHLDE LD A,B JR Z,A1731 LD (HL),A INC HL LD (Y2C23),HL RET ; A1731: PUSH AF CALL A1739 POP AF JR A171C ; A1739: LD DE,(Y2C23) LD HL,(Y2C25) CALL CPHLDE RET Z PUSH HL CALL A1604 POP HL A1749: PUSH HL EX DE,HL LD C,SETDMA CALL BDOS LD DE,DSTFCB LD C,FWRIT CALL BDOS OR A JP NZ,A0F16 POP HL LD DE,80H ADD HL,DE EX DE,HL LD HL,(Y2C23) EX DE,HL CALL CPHLDE JR C,A1749 LD HL,(Y2C25) LD (Y2C23),HL RET ; A1773: LD DE,(Y2C1F) LD HL,(Y2C21) CALL CPHLDE JR Z,A1787 LD A,(HL) INC HL LD (Y2C21),HL CP A RET ; A1787: CALL LOGDUE LD HL,(FILPTR) LD (Y2C21),HL LD (Y2C1F),HL LD B,20H A1795: PUSH BC EX DE,HL LD C,SETDMA CALL BDOS LD DE,SRCFCB LD C,FREAD CALL BDOS POP BC OR A JR NZ,A17BA LD HL,(Y2C1F) LD DE,80H ADD HL,DE LD (Y2C1F),HL DJNZ A1795 JR A1773 ; A17BA: LD DE,(Y2C21) LD HL,(Y2C1F) CALL CPHLDE JR NZ,A1773 XOR A DEC A RET ; A17CA: LD HL,(NMBFLS) PUSH HL POP BC LD HL,STACK LD DE,STACK RET ; ; PROCESS FILENAME ON INITIAL COMMAND LINE ; PRCMDL: LD A,(DFCB) OR A JR Z,.CRDV DEC A LD (DRIVE2),A .CRDV: LD A,(DFCB+17) CP '?' JR NZ,.NALU LD A,0FFH LD (USER2),A .NALU: LD HL,FCB1+1 LD A,(HL) CP ' ' RET NZ LD DE,FCB1+2 LD (HL),'?' LD B,10 JP MOVHDB ; PRPBUF: CALL A17CA A1802: LD A,(HL) CP ' ' JR NC,A1834 PUSH HL PUSH AF INC HL PUSH BC LD B,11 CALL MOVHDB POP BC POP AF LD (DE),A LD A,(HL) PUSH AF INC HL INC DE XOR A LD (DE),A INC HL INC DE LD A,(HL) LD (DE),A INC DE POP AF LD (DE),A INC DE INC HL LD A,(HL) LD (DE),A INC DE POP HL A1827: PUSH DE LD DE,20H ADD HL,DE POP DE DEC BC LD A,B OR C JR NZ,A1802 RET ; A1834: PUSH BC LD B,16 LD A,0E5H A1839: LD (DE),A INC DE DJNZ A1839 POP BC JR A1827 ; SORTBF: LD HL,(NMBFLS) LD (Y2C19),HL DEC HL LD A,H OR L RET Z A184D: LD HL,(Y2C19) LD A,H OR L RET Z XOR A LD A,H RRA LD H,A LD A,L RRA LD L,A LD (Y2C19),HL OR H JR NZ,A1862 INC HL A1862: LD (Y2C1B),HL EX DE,HL LD HL,(NMBFLS) DEC HL OR A SBC HL,DE LD (Y2C15),HL LD HL,0 LD (Y2C13),HL A1879: LD HL,(Y2C13) LD (FILNMB),HL A187F: LD DE,(FILNMB) LD HL,(Y2C1B) ADD HL,DE LD (Y2C17),HL CALL A18C4 JR Z,A18B0 JR C,A18B0 CALL A18F5 LD DE,(Y2C1B) LD HL,(FILNMB) OR A SBC HL,DE LD (FILNMB),HL JP M,A18B0 OR L JR Z,A18B0 JR A187F ; A18B0: LD HL,(Y2C13) INC HL LD (Y2C13),HL EX DE,HL LD HL,(Y2C15) CALL CPHLDE JR C,A184D JR A1879 ; A18C4: LD HL,(FILNMB) CALL CLCFPT LD (Y2C0D),HL PUSH HL LD HL,(Y2C17) CALL CLCFPT LD (Y2C0F),HL POP DE LD B,11 A18DA: LD A,(HL) AND 7FH LD C,A LD A,(DE) AND 7FH CP C RET NZ INC HL INC DE DJNZ A18DA LD B,5 A18EB: LD A,(DE) CP (HL) RET NZ INC HL INC DE DJNZ A18EB RET ; A18F5: LD DE,(Y2C0D) LD HL,(Y2C0F) LD C,10H A18FE: LD B,(HL) LD A,(DE) LD (HL),A LD A,B LD (DE),A INC DE INC HL DEC C JR NZ,A18FE RET ; CPHLDE: LD A,H CP D RET NZ LD A,L CP E RET ; UNDUPE: LD HL,0 LD (FILNMB),HL LD (Y2C15),HL INC HL LD (Y2C13),HL LD HL,(NMBFLS) LD (SRCCRC),HL A1923: CALL A195D JR Z,A192F CALL A197D CALL Z,A1946 A192F: LD HL,(Y2C13) LD (FILNMB),HL INC HL LD (Y2C13),HL LD HL,(SRCCRC) DEC HL LD (SRCCRC),HL LD A,H OR L JR NZ,A1923 RET ; A1946: LD HL,(Y2C15) CALL CLCFPT EX DE,HL LD HL,(Y2C0D) LD B,10H CALL MOVHDB LD HL,(Y2C15) INC HL LD (Y2C15),HL RET ; A195D: LD HL,(FILNMB) CALL CLCFPT LD (Y2C0D),HL PUSH HL LD HL,(Y2C13) CALL CLCFPT LD (Y2C0F),HL POP DE LD B,12 A1973: LD A,(DE) CP (HL) RET NZ INC HL INC DE DJNZ A1973 RET ; A197D: LD HL,(Y2C0D) LD A,(HL) CP 0E5H JR Z,A19B5 PUSH HL LD DE,11 ADD HL,DE LD B,(HL) POP HL LD DE,FCB1+1 LD C,11 LD A,B CP 32 JR NC,A19B5 LD A,(USER2) CP 0FFH JR Z,A19A2 CP B RET NZ A19A2: LD A,(DE) CP 03FH JR Z,A19AE LD B,A LD A,7FH AND (HL) CP B RET NZ A19AE: INC HL INC DE DEC C JR NZ,A19A2 RET ; A19B5: OR A RET ; ; CALC TOTAL K ; CLCTLK: LD HL,0 LD (TOTALK),HL LD HL,(NMBFLS) INC HL LD A,L OR H RET Z PUSH HL POP BC LD HL,STACK+13 LD DE,16 CTLKL1: PUSH HL PUSH DE PUSH BC CALL CLCFSZ EX DE,HL LD HL,(TOTALK) ADD HL,DE LD (TOTALK),HL POP BC POP DE POP HL ADD HL,DE DEC BC LD A,B OR C JR NZ,CTLKL1 RET ; HEXDEC: PUSH HL LD DE,10000 CALL CPHLDE JR C,HEXDC4 LD D,5 JR HEXDC0 ; HEXDC4: LD DE,1000 CALL CPHLDE JR C,HEXDC3 LD D,4 JR HEXDC0 ; HEXDC3: LD DE,100 CALL CPHLDE JR C,HEXDC2 LD D,3 JR HEXDC0 ; HEXDC2: LD A,L CP 10 JR C,HEXDC1 LD D,2 JR HEXDC0 ; HEXDC1: LD D,1 HEXDC0: LD A,C SUB D JR Z,HDNLB JR C,HDNLB LDBL: PUSH AF LD A,' ' CALL PUTCH POP AF DEC A JR NZ,LDBL HDNLB: POP HL HXDCNX: PUSH AF PUSH BC PUSH DE PUSH HL LD BC,-10 LD DE,-1 HXDCLP: ADD HL,BC INC DE JR C,HXDCLP LD BC,10 ADD HL,BC EX DE,HL LD A,H OR L CALL NZ,HXDCNX LD A,E ADD A,'0' CALL PUTCH POP HL POP DE POP BC POP AF RET ; CALCFS: LD DE,DBUF LD C,SETDMA CALL BDOS LD A,(DRIVE2) LD E,A LD C,46 CALL BDOS LD HL,(DBUF) LD A,(DBUF+2) LD B,A LD C,3 A1AB9: OR A RR B RR H RR L DEC C JR NZ,A1AB9 LD (FREEK),HL RET ; CLCFSZ: LD D,0 LD E,(HL) EX DE,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL EX DE,HL INC HL LD A,(HL) PUSH HL LD H,0 LD L,A ADD HL,DE ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL POP DE INC DE LD A,(DE) RRCA RRCA RRCA PUSH AF AND 1FH ADD A,L LD L,A JR NC,A1AEE INC H A1AEE: POP AF AND 0E0H JR Z,A1AF5 INC HL A1AF5: PUSH HL POP DE LD A,(BLKSZE) OR A RET Z CP 1 JR Z,A1B38 CP 2 JR Z,A1B29 CP 3 JR Z,A1B1A LD A,L AND 0FH RET Z PUSH DE LD A,0F0H AND L LD L,A LD DE,10H ADD HL,DE POP DE RET ; A1B1A: LD A,L AND 7 RET Z PUSH DE LD DE,8 ADD HL,DE LD A,L AND 0F8H LD L,A POP DE RET ; A1B29: LD A,L AND 3 RET Z LD A,L AND 0FCH LD L,A PUSH DE LD DE,4 ADD HL,DE POP DE RET ; A1B38: LD A,L AND 1 RET Z INC HL RET ; ; MOVE HL->DE, B BYTES ; MOVHDB: LD C,B LD B,0 LDIR RET ; CAPS: CP 'a' RET C CP 'z'+1 RET NC AND 5FH RET ; ; GET BLOCK SIZE AND LOG DRIVE ; GTBKSZ: LD A,(DRIVE2) LD E,A PUSH DE LD C,SELDSK CALL BDOS POP DE LD C,19 CALL TDOS CP 0FFH ; NETWORK ERROR? JR Z,NTWERR AND 7 SUB 3 LD (BLKSZE),A RET ; NTWERR: CALL ILPRT DB CR,LF,LF,7 DB 'Network Error',CR,LF,0 RST 0 ; HELPME: CALL DSPBNR LD DE,HLPMSG CALL PRINTM LD HL,(NMBFLS) CALL PSTATS CALL CRLF CALL .MTGDF CALL .TALRY JP CRLF ; DSPBNR: LD DE,BANNER CALL PRINTM LD C,GETSER CALL TDOS PUSH BC PUSH DE LD C,2 CALL HEXDEC LD A,'/' CALL PUTCH POP HL LD C,1 CALL HEXDEC LD C,12 CALL 5 PUSH DE LD DE,BANN1 CALL PRINTM POP HL LD C,1 CALL HEXDEC LD DE,BANN2 CALL PRINTM POP HL CALL PVERS LD DE,BANN3 CALL PRINTM LD C,12 CALL 5 CALL PVERS LD DE,BANN4 JP PRINTM ; PVERS: LD A,L AND 0F0H RRA RRA RRA RRA OR 30H PUSH HL CALL PUTCH LD A,'.' CALL PUTCH POP HL LD A,L AND 0FH OR 30H JP PUTCH ; A1B9C: LD HL,(Y2C3D) EX DE,HL CALL SKNBL LD HL,DFCB XOR A LD (HL),A DEC A JP A1C26 ; ; PARSE TO DEFAULT FCB ; PARSDF: LD HL,DFCB ; ; PARSE FILE NAME ; ; PARSFN: LD DE,(Y2C3D) ; GET SOURCE CALL SKNBL ; ADVANCE DE TO FIRST NONBLANK LD A,(DRIVE2) ; GET DEFAULT DRIVE INC A ; MAKE 1..16 LD B,A ; SAVE IT LD C,0FFH ; SET USER TO NONE LD A,(DE) ; GET CHAR OR A ; IF EOL JR Z,A1C07 ; THEN DONE PARSING PUSH DE ; SAVE POINTER CP '0' ; IF NON-NUMBERIC JR C,A1BCF ; THEN SKIP CP '9'+1 ; IF NUMERIC JR C,A1BE2 ; THEN PROCESS USER NUMBER A1BCF: SBC A,40H ; MAY BE A DRIVESPEC - SAVE AS SUCH LD B,A INC DE LD A,(DE) ; GET NECT CHAR CP ':' ; DRIVE/USER TERMINATOR? JR Z,A1C11 ; YES OR A ; EOL? JR Z,A1C11 ; YES CP '*' ; WILDCARD? JR Z,A1BE5 ; YES A1BE2: SUB '0' ; MAKE BINARY 0..9 LD C,A A1BE5: INC DE LD A,(DE) ; GET NEXT BYTE CP '9'+1 ; NUMERIC CHECK AGAIN JR Z,A1C11 OR A JR Z,A1C11 PUSH AF CALL USRPAT LD C,A POP AF SUB '0' ADD A,C LD C,A INC DE LD A,(DE) CP ':' JR Z,A1C11 OR A JR Z,A1C11 A1C06: POP DE A1C07: LD A,(DRIVE2) INC A LD (HL),A LD A,0FFH JR A1C26 ; A1C11: LD A,B CP 11H JR NC,A1C06 LD A,C CP 0FFH JR Z,A1C22 CP ' ' JR NC,A1C06 A1C22: POP AF LD (HL),B INC DE LD A,C A1C26: LD (Y2C3A),A LD B,8 A1C2B: CALL CKDLIM JR Z,A1C4C INC HL CP '*' JR NZ,A1C3C LD (HL),'?' JR A1C3E ; A1C3C: LD (HL),A INC DE A1C3E: DJNZ A1C2B A1C42: CALL CKDLIM JR Z,A1C53 INC DE JR A1C42 ; A1C4C: INC HL LD (HL),' ' DJNZ A1C4C A1C53: LD B,3 CP '.' JR NZ,A1C7C INC DE A1C5B: CALL CKDLIM JR Z,A1C7C INC HL CP '*' JR NZ,A1C6C LD (HL),'?' JR A1C6E ; A1C6C: LD (HL),A INC DE A1C6E: DJNZ A1C5B A1C72: CALL CKDLIM JR Z,A1C83 INC DE JR A1C72 ; A1C7C: INC HL LD (HL),' ' DJNZ A1C7C A1C83: LD B,3 A1C85: INC HL LD (HL),0 DJNZ A1C85 EX DE,HL LD (Y2C3D),HL RET ; CKDLIM: LD A,(DE) OR A RET Z CP ' ' RET Z CP 3DH RET Z CP 5FH RET Z CP '.' RET Z CP ':' RET Z CP 3BH RET Z CP 3CH RET Z CP 3EH RET ; ; SKIP TO NONBLANK OR EOL ; SKNBL: LD A,(DE) OR A RET Z CP ' ' RET NZ INC DE JR SKNBL ; ; CREATE CRC LOOKUP TABLE ; CRCRCT: LD HL,CRCTBL LD C,0 A1CBB: EX DE,HL LD HL,0 LD A,C PUSH BC LD B,8 XOR H LD H,A A1CC5: ADD HL,HL JR NC,A1CD1 LD A,10H XOR H LD H,A LD A,21H XOR L LD L,A A1CD1: DJNZ A1CC5 POP BC EX DE,HL LD (HL),D INC H LD (HL),E DEC H INC HL INC C JR NZ,A1CBB RET ; ; CALCULATE CRC OF ALL BYTES BETWEEN HL AND DE, INCLUSIVELY ; CRCBLK: LD A,(CRCFLG) ; CHECK IF CRC ENABLED OR A RET Z ; RETURN IF NOT .CRCLP: LD A,(HL) CALL CRCK INC HL CALL CPHLDE JR NZ,.CRCLP RET ; CRCK: PUSH BC PUSH HL PUSH DE LD HL,(CRCACC) EX DE,HL LD B,0 XOR D LD C,A LD HL,CRCTBL ADD HL,BC LD A,(HL) XOR E LD D,A INC H LD E,(HL) EX DE,HL LD (CRCACC),HL POP DE POP HL POP BC RET ; ADDH12: LD DE,12 ADD HL,DE RET ; CRLF: CALL ILPRT DB CR,LF,0 RET ; ILPRT: POP HL LD A,(HL) OR A INC HL PUSH HL RET Z CALL PUTCH JR ILPRT ; PRINTM: LD C,9 JP BDOS ; PUTCH: BIT 7,A JR Z,OUTCHR PUSH AF CALL A1D46 POP AF CALL OUTCHR JR A1D4C ; OUTCHR: AND 7FH LD E,A LD C,2 JP BDOS ; A1D46: LD HL,REVON JR A1D4F ; A1D4C: LD HL,REVOF A1D4F: LD A,(HL) INC HL OR A RET Z LD B,A A1D54: PUSH HL PUSH BC LD A,(HL) CALL OUTCHR POP BC POP HL INC HL DJNZ A1D54 RET ; ; CALCULATE FILE POINTER ; CLCFPT: ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,STACK ADD HL,DE RET ; USRPAT: PUSH BC XOR A LD B,10 DC10LP: ADD A,B DEC C JR NZ,DC10LP POP BC RET ; ; DELETE FILE (FCB IN DE), RETURN Z=ERROR ; DELDE: PUSH DE LD C,SFIRST ; SEE IF EXISTS CALL BDOS INC A LD A,3 JR Z,.XDL ; EXIT IF NOT THERE POP DE PUSH DE LD C,FDELT ; WIPE IT OUT CALL BDOS INC A JR NZ,.XDL ; OK TO EXIT POP DE RET ; .XDL: POP DE INC A RET ; BANNER: CLS:: DB ' ' DB CR,LF DB 'NSWP Version 2.05.26 for TurboDOS',CR,LF DB 'Original (c) Dave Rand, 1983,1984',CR,LF DB 'Serial number $' BANN1: DB ' Network CPU : $' BANN2: DB CR,LF,'TurboDOS version : $' BANN3: DB ' CP/M version : $' BANN4: DB CR,LF,CR,LF,'$' ; HLPMSG: DB CR,LF DB 9,'A - Retag files | Q - Squeeze/Unsqueeze files' DB CR,LF DB 9,'B - Back one file | R - Rename file(s)' DB CR,LF DB 9,'C - Copy file | S - Check remaining space' DB CR,LF DB 9,'D - Delete file | T - Tag file for transfer' DB CR,LF DB 9,'E - Erase T/U files | U - Untag file' DB CR,LF DB 9,'F - Find file | V - View file' DB CR,LF DB 9,'G - Go execute file | W - Wildcard tag of files' DB CR,LF DB 9,'L - Log new disk/user | Y - Set file status.' DB CR,LF DB 9,'M - Mass file copy | Z - Change disk' DB CR,LF DB 9,'P - Print file | ? - Display this help' DB CR,LF DB 9,'X - Exit to TurboDOS | cr, sp - Forward one file' DB CR,LF,CR,LF,'$' ; ; INPUT LINE ; LINE: DB 18 LINEC: DB 2 LINET: DB '23' DS 18 ; A1FED: LD DE,16 LD (D2156),HL ADD HL,DE LD (D2158),HL LD HL,0 ADD HL,SP LD (A206A+1),HL CALL A2141 LD DE,0FF76H CALL CMPHD LD A,1 RET NZ XOR A LD (D2152),A LD (D2155),A CALL A2141 LD (D215C),HL LD HL,(D2156) A201A: PUSH HL CALL A1773 POP HL PUSH AF D2020: CALL CAPS LD B,A POP AF LD (HL),B INC HL JR NZ,A206A OR A JR NZ,A201A CALL A2141 LD (D215E),HL LD DE,102H CALL CMPHD JR C,A2041 LD A,2 OR A RET ; A2041: LD DE,(D2158) A2046: LD (D215A),HL LD A,H OR L JR Z,A2071 PUSH DE CALL A2141 POP DE EX DE,HL LD (HL),E INC HL LD (HL),D INC HL PUSH HL CALL A2141 EX DE,HL POP HL LD (HL),E INC HL LD (HL),D INC HL EX DE,HL LD HL,(D215A) DEC HL JR A2046 ; A206A: LD SP,0 ; FILLED LATER LD A,3 OR A RET ; A2071: LD HL,(D2156) LD DE,(D215C) XOR A RET ; DB 'USQ SECTION (C) DAVE RAND' ; A20BA: LD HL,0 ADD HL,SP LD (A206A+1),HL LD A,(D2155) OR A JR Z,A20D1 DEC A LD (D2155),A LD A,(D2154) CP A RET ; A20D1: CALL A20F3 CP 90H JR NZ,A20EE CALL A20F3 OR A JR NZ,A20E4 LD A,90H CP A RET ; A20E4: DEC A DEC A LD (D2155),A LD A,(D2154) CP A RET ; A20EE: LD (D2154),A CP A RET ; A20F3: LD DE,0 LD A,(D2153) LD C,A A20FA: LD A,(D2152) OR A JR NZ,A210C PUSH DE CALL A1773 JP NZ,A206A POP DE LD C,A LD A,8 A210C: DEC A LD (D2152),A LD A,C RRCA LD C,A LD HL,(D2158) JR NC,A211B INC HL INC HL A211B: ADD HL,DE ADD HL,DE ADD HL,DE ADD HL,DE LD E,(HL) INC HL LD D,(HL) LD A,D AND 80H JR Z,A20FA LD A,C LD (D2153),A LD A,D CP 0FEH LD A,1AH JR Z,A2138 LD A,E CPL CP A RET ; A2138: POP HL OR A RET ; CMPHD: LD A,H CP D RET NZ LD A,L CP E RET ; A2141: CALL A1773 JP NZ,A206A PUSH AF CALL A1773 JP NZ,A206A LD H,A POP AF LD L,A RET ; D2152: DB 0 D2153: DB 0 D2154: DB 0 D2155: DB 0 D2156: DW 0 D2158: DW 0 D215A: DW 0 D215C: DW 0 D215E: DW 0 ; A2160: LD A,0FFH LD (D29C6),A LD (D2A20),HL LD HL,0 ADD HL,SP LD (D2A60),HL LD SP,D2A60 LD HL,(D2A20) LD A,L AND 0FCH LD L,A LD A,4 CALL A296B LD (D29C7),HL LD DE,1024 ADD HL,DE LD (D2A1C),HL LD DE,1024 ADD HL,DE LD (D2A1E),HL CALL A2904 XOR A LD (D29CC),A CALL A2935 JR NZ,A21A1 LD A,2 JP A256E ; A21A1: LD DE,0FF76H CALL CMPHD JR NZ,A21AF LD A,1 JP A256E ; A21AF: LD A,L LD (D29CB),A PUSH HL CALL A28E6 POP HL LD A,H JR A21C2 ; A21BC: CALL A2941 JP Z,A221D A21C2: LD HL,D29CB CP (HL) JR Z,A21F7 INC HL INC (HL) DEC (HL) JR Z,A2214 PUSH AF LD A,(HL) LD (HL),0 CP 3 JR NC,A21E8 LD B,A DEC HL LD A,(HL) A21DB: PUSH AF CALL A28E6 POP AF DJNZ A21DB POP AF JR A2214 ; A21E8: PUSH AF LD A,90H CALL A28EF POP AF INC A CALL A28EF POP AF JR A2214 ; A21F7: CP 90H JR Z,A2214 INC HL INC (HL) LD A,(HL) CP 0FFH JR NZ,A21BC PUSH HL LD A,90H CALL A28EF POP HL LD A,(HL) LD (HL),0 CALL A28EF LD A,(D29CB) A2214: LD (D29CB),A CALL A28E6 JR A21BC ; A221D: LD A,(D29CC) OR A JR Z,A222F PUSH AF LD A,90H CALL A28EF POP AF INC A CALL A28EF A222F: LD B,0 LD HL,(D2A1C) A2234: LD E,(HL) INC HL LD D,(HL) INC HL LD C,(HL) INC HL LD A,D OR E OR C JR NZ,A224A INC HL DJNZ A2234 LD A,2 JP A256E ; A224A: DEC B LD A,(HL) PUSH HL LD HL,(D2A1E) LD (HL),A INC HL LD (HL),E INC HL LD (HL),D INC HL LD (HL),C INC HL LD (D29D9),HL POP HL LD A,1 LD (D29CD),A INC HL A2262: LD E,(HL) INC HL LD D,(HL) INC HL LD C,(HL) INC HL LD A,(HL) INC HL LD (D2A1A),A LD A,E OR D OR C JR Z,A22D1 PUSH HL PUSH BC LD A,(D29CD) LD B,A LD HL,(D2A1E) INC HL A227D: PUSH HL CALL A298C JR C,A2294 POP HL INC HL INC HL INC HL INC HL DJNZ A227D LD A,C LD (D2A1B),A JR A22B0 ; A2294: LD HL,(D29D9) LD A,C LD (D2A1B),A POP BC PUSH BC DEC BC LD A,L SUB C LD C,A LD A,H SBC A,B LD B,A PUSH DE LD D,H LD E,L INC DE INC DE INC DE DEC HL CALL A29B5 POP DE POP HL A22B0: DEC HL POP BC LD A,(D2A1A) LD (HL),A INC HL LD (HL),E INC HL LD (HL),D INC HL LD A,(D2A1B) LD (HL),A LD HL,(D29D9) INC HL INC HL INC HL INC HL LD (D29D9),HL LD A,(D29CD) INC A LD (D29CD),A POP HL A22D1: DJNZ A2262 LD A,(D29CD) LD HL,T2860 LD B,7 OR A JR Z,A22F3 A22E1: INC (HL) DEC (HL) JR NZ,A22EA CP (HL) JR NZ,A22EE A22EA: CP (HL) JR NC,A22F3 A22EE: INC HL DJNZ A22E1 A22F3: INC B INC B INC B LD HL,D285F LD (HL),B XOR A LD (D2A15),A LD (D2A16),A A2301: CALL A284A XOR A LD H,A LD (D29CC),A LD (D29D8),A INC A LD L,A LD (D29CB),A LD (D29D6),HL INC A LD (D29D2),A LD HL,(D29C7) LD (D29D4),HL LD HL,0 LD (D29E9),HL LD (D29EB),HL LD HL,T2A02 LD DE,T2A03 LD BC,10H LD (HL),0 CALL A29AA LD A,(D2A15) OR A JR NZ,A236B A233C: CALL A2832 JP Z,A2432 CALL A2883 JR Z,A23A3 LD B,A LD A,(D29CB) CP C JR Z,A2358 A2350: CALL A26EB INC A CP C JR NZ,A2350 A2358: LD A,(D29D2) CP 1 JR Z,A23A8 LD HL,D29CC INC (HL) LD A,B CALL A2771 JR A233C ; A236B: CALL A2832 JP Z,A2432 LD B,A A2372: LD HL,D29CB LD A,(D285F) CP (HL) JR C,A23A4 LD A,(HL) LD HL,T29F1 CALL A296B LD A,(D29CC) CP (HL) JR NZ,A2390 CALL A26EB JR A2372 ; A2390: LD A,(D29D2) CP 1 JR Z,A23A8 LD HL,D29CC INC (HL) LD A,B CALL A2771 JR A236B ; A23A3: LD B,A A23A4: PUSH BC JR A23AC ; A23A8: PUSH BC A23A9: CALL A26EB A23AC: LD HL,D29CE LD A,(HL) CP 0FEH JR C,A23C0 LD A,(D29CB) CP 7 LD A,(HL) JR NC,A23C0 LD A,0FDH A23C0: INC A INC A LD B,A LD A,(D29D2) ADD A,A SUB B JR NC,A2400 LD A,(D29D2) OR A RLA JR NC,A23D8 RRA RRA JR A23E0 ; A23D8: RRA CALL A28CB OR A JR Z,A23A9 A23E0: LD (D29D3),A POP BC JR A23EE ; A23E7: CALL A2832 JR Z,A2432 LD B,A A23EE: LD HL,D29CC INC (HL) LD A,(D29D3) CP (HL) JR C,A23A8 LD A,B CALL A2771 JR A23E7 ; A2400: LD (D29D3),A POP BC JR A240E ; A2407: CALL A2832 JR Z,A2432 LD B,A A240E: LD HL,D29CC INC (HL) LD A,(D29D3) CP (HL) LD A,B JR C,A2420 CALL A2771 JR A2407 ; A2420: CALL A26EB JR A242C ; A2426: CALL A2832 JR Z,A2432 A242C: CALL A2771 JR A2426 ; A2432: LD A,(D2A16) OR A PUSH AF CALL NZ,A2817 POP AF JP NZ,A250D LD A,(D2A15) OR A JR NZ,A246F LD HL,D29E9 LD DE,T29ED LD BC,4 CALL A29AA LD HL,T2A02 LD DE,T29F1 LD BC,11H CALL A29AA LD A,(D29C0) DEC A LD (D2A13),A LD A,0FFH LD (D2A15),A LD (D2A17),A JR A24E7 ; A246F: LD A,0FFH LD (D2A17),A LD HL,D29E9 LD DE,T29ED LD B,4 CALL A2999 JR C,A24B0 A2482: XOR A LD (D2A17),A A2486: LD HL,T29F1 LD A,(D2A13) CALL A296B LD A,(D2A18) LD C,(HL) LD (HL),A LD A,(D2A14) CPL INC A CP 0FFH JR Z,A24E7 LD B,A LD A,(D2A19) SUB C CP 02H JR NC,A24E7 INC (HL) LD A,B LD (D2A14),A JR A24D1 ; A24B0: LD HL,T2A02 LD DE,T29F1 LD BC,11H CALL A29AA A24BC: LD HL,T29F1 LD A,(D2A13) CALL A296B LD A,(HL) LD (D2A18),A LD A,(D2A14) ADD A,(HL) JP M,A2486 LD (HL),A A24D1: LD A,(D2A17) OR A JP Z,A2301 LD HL,D29E9 LD DE,T29ED LD BC,4 CALL A29AA JP A2301 ; A24E7: LD A,0FFH LD (D2A14),A LD A,(D285F) LD HL,D2A13 INC (HL) CP (HL) JR NC,A24FF LD A,0FFH LD (D2A16),A JP A2301 ; A24FF: LD A,(HL) LD HL,T29F1 CALL A296B LD A,(HL) LD (D2A19),A JR A24BC ; A250D: LD HL,D29E9 LD BC,1027 CALL A2A62 XOR A LD (D29C6),A LD HL,(D29D6) ADD HL,HL ADD HL,HL LD A,0FH CALL A296B LD DE,D29E9 LD (D29E0),HL LD HL,0 LD (D29E2),HL LD HL,D29E0 LD B,4 CALL A2970 EX DE,HL LD A,(HL) OR 7FH LD (HL),A EX DE,HL LD (HL),1 PUSH HL INC HL XOR A LD (HL),A INC HL LD (HL),A INC HL LD (HL),A POP HL LD B,4 CALL A2970 EX DE,HL LD BC,1031 CALL A2A62 LD HL,D29DD LD BC,307H CALL A2A62 LD HL,(D29DD) EX DE,HL LD HL,(D29E9) CALL CMPHD LD A,3 JR NC,A256E XOR A A256E: LD HL,(D2A60) LD SP,HL LD HL,(D29E9) RET ; A2576: LD A,(D29C6) OR A JR Z,A257F XOR A RET ; A257F: LD (D2A22),HL LD HL,0 ADD HL,SP LD (D2A60),HL LD SP,D2A60 LD HL,0FF76H CALL A26DC LD HL,(D29DB) CALL A26DC EX DE,HL LD HL,0 OR A SBC HL,DE LD (D29DB),HL LD HL,(D2A22) INC HL LD B,8 A25A8: LD A,(HL) CP ' ' JR Z,A25B6 CALL A26E1 INC HL DJNZ A25A8 A25B6: LD A,'.' CALL A26E1 LD A,B CALL A296B LD B,3 A25C1: LD A,(HL) CP ' ' JR Z,A25CF CALL A26E1 INC HL DJNZ A25C1 A25CF: XOR A CALL A26E1 LD HL,(D29D6) CALL A26DC ADD HL,HL ADD HL,HL EX DE,HL LD HL,(D29C7) A25DF: LD A,(HL) CALL A26E1 INC HL DEC DE LD A,D OR E JR NZ,A25DF XOR A LD (D29CA),A LD (D29CC),A LD A,8 LD (D29C9),A CALL A2941 JR A2654 ; A25FC: CALL A2941 JR Z,A265D LD HL,D29CB CP (HL) JR Z,A2637 INC HL INC (HL) DEC (HL) JR Z,A2654 PUSH AF LD A,(HL) LD (HL),0 CP 3 JR NC,A2628 LD B,A DEC HL LD A,(HL) A261B: PUSH AF CALL A26A3 POP AF DJNZ A261B POP AF JR A2654 ; A2628: PUSH AF LD A,90H CALL A26AC POP AF INC A CALL A26AC POP AF JR A2654 ; A2637: CP 90H JR Z,A2654 INC HL INC (HL) LD A,(HL) CP 0FFH JR NZ,A25FC PUSH HL LD A,90H CALL A26AC POP HL LD A,(HL) LD (HL),0 CALL A26AC LD A,(D29CB) A2654: LD (D29CB),A CALL A26A3 JR A25FC ; A265D: LD A,(D29CC) OR A JR Z,A266F PUSH AF LD A,90H CALL A26AC POP AF INC A CALL A26AC A266F: LD A,0FFH CALL A295F INC HL INC HL INC HL CALL A26B1 LD A,(D29C9) CP 8 JR Z,A268E LD B,A LD A,(D29CA) A2686: RRA DJNZ A2686 CALL A26E1 A268E: LD A,0FFH LD (D29C6),A LD HL,(D29DB) LD A,H OR L LD A,1 JR NZ,A269E XOR A A269E: LD HL,(D2A60) LD SP,HL RET ; A26A3: CP 90H JR NZ,A26AC CALL A26AC XOR A A26AC: PUSH BC CALL A295F POP BC A26B1: PUSH BC LD B,(HL) INC HL LD E,(HL) INC HL LD D,(HL) LD A,(D29C9) LD C,A A26BB: RL E RL D ; LD A,E ; RLA ; LD E,A ; LD A,D ; RLA ; LD D,A LD A,(D29CA) RRA DEC C JR NZ,A26CF CALL A26E1 LD C,8 XOR A A26CF: LD (D29CA),A DJNZ A26BB LD A,C LD (D29C9),A POP BC RET ; A26DC: LD A,L CALL A26E1 LD A,H A26E1: PUSH BC PUSH DE PUSH HL CALL A171C POP HL POP DE POP BC RET ; A26EB: PUSH AF PUSH BC LD A,(D2A16) OR A JR Z,A2727 LD A,(D29D2) LD HL,(D29D6) EX DE,HL LD HL,(D29D4) LD B,A LD A,(D29D8) LD C,A A2703: LD (HL),E INC HL LD (HL),D INC HL LD A,L AND 2 JR NZ,A270E INC C A270E: INC DE LD A,D OR A JR Z,A2718 CP E JR Z,A273E A2718: DJNZ A2703 LD (D29D4),HL EX DE,HL LD (D29D6),HL LD A,C LD (D29D8),A A2727: LD HL,D29CB INC (HL) LD A,(HL) CP 11H JR NC,A273E XOR A LD (D29CC),A LD HL,D29D2 LD A,(HL) ADD A,A LD (HL),A POP BC POP AF RET ; A273E: POP BC POP AF POP HL LD A,(D285F) DEC A LD B,A JR NZ,A274E LD A,4 JP P,A256E A274E: LD A,(D2A16) OR A JR NZ,A275C LD A,(D2A15) OR A JP NZ,A2482 A275C: LD HL,D285F LD (HL),B LD A,(D2A16) OR A JP Z,A2301 XOR A LD (D2A16),A LD (D2A15),A JP A2301 ; A2771: PUSH AF CALL A295F A2775: LD A,(D29CB) LD (HL),A INC HL PUSH HL LD HL,(D29D0) DEC HL LD (D29E5),A LD DE,T29E3 LD BC,3 XOR A LD (DE),A DEC DE CALL A29B5 LD HL,0 LD (D29E6),HL LD (D29E7),HL LD B,4 LD DE,D29E5 LD HL,D29E0 CALL A2B43 LD DE,D29E9 LD HL,D29E0 LD B,4 CALL A2970 LD A,(D29CB) LD HL,T2A02 CALL A296B INC (HL) LD HL,D29D2 DEC (HL) LD A,(D2A16) OR A JR NZ,A27C5 POP HL POP AF RET ; A27C5: LD HL,(D29D4) LD DE,0 LD (HL),0FFH LD A,(D29D8) LD C,A A27D1: LD A,L AND 2 JR Z,A27D8 SCF A27D8: LD A,D RRA LD D,A LD A,E RRA LD E,A LD A,(HL) CP 3 JR C,A27FD LD B,C A27E5: DEC HL LD A,(HL) DEC HL PUSH AF LD A,L AND 2 JR Z,A27F0 DEC C A27F0: POP AF OR A JR NZ,A27E5 LD A,(HL) CP B JR Z,A27D1 JR A27E5 ; A27FD: POP HL LD (HL),E INC HL LD (HL),D LD HL,(D29D4) POP AF CPL LD (HL),A INC HL LD (HL),0FFH INC HL LD (D29D4),HL LD A,L AND 2 RET NZ LD HL,D29D8 INC (HL) RET ; A2817: LD A,0FFH CALL A295F INC HL INC HL INC HL PUSH HL LD HL,T2827 EX (SP),HL CALL A2775 T2827: LD HL,(D29D4) LD A,0FEH DEC HL LD (HL),A DEC HL INC A LD (HL),A RET ; A2832: LD HL,(D29CE) LD A,L OR H RET Z DEC HL LD (D29CE),HL LD HL,(D29D0) LD A,(HL) INC HL LD D,H LD E,L INC HL INC HL INC HL LD (D29D0),HL RET ; A284A: LD A,(D29CD) LD L,A LD H,0 OR A JR NZ,A2855 INC H A2855: LD (D29CE),HL LD HL,(D2A1E) LD (D29D0),HL RET ; D285F: DB 0 T2860: DB 80H,40H,20H,10H,8,4,2 T2867: DW 0FFFFH,30H,18H,0CH,6,3 DW 180H,0C0H,60H,30H,18H,0CH,6,3 ; A2883: PUSH AF CALL A28B2 LD HL,(D29E0) EX DE,HL LD C,1 LD HL,T2867 LD A,(D285F) LD B,A A2894: LD A,(HL) INC HL PUSH HL LD H,(HL) LD L,A OR A SBC HL,DE POP HL JR C,A28AB INC C INC HL DJNZ A2894 POP AF LD B,A XOR A LD A,B RET ; A28AB: POP AF OR A RET NZ DEC A LD A,0 RET ; A28B2: EX DE,HL LD DE,D29E0 PUSH DE XOR A LD (DE),A INC DE LD (DE),A INC DE LD BC,3 CALL A29AA POP HL LD DE,T29C1 LD B,5 JP A2A82 ; A28CB: LD B,0 A28CD: SUB 3 JR C,A28D6 INC B JR A28CD ; A28D6: LD A,B RET ; A28D8: LD HL,T29C1 INC (HL) RET NZ INC HL INC (HL) RET NZ INC HL INC (HL) RET NZ INC HL INC (HL) RET ; A28E6: CP 90H JR NZ,A28EF CALL A28EF XOR A A28EF: CALL A28D8 LD L,A LD H,0 ADD HL,HL ADD HL,HL EX DE,HL LD HL,(D2A1C) ADD HL,DE INC (HL) RET NZ INC HL INC (HL) RET NZ INC HL INC (HL) RET ; A2904: XOR A LD B,A LD C,A LD HL,(D2A1C) A290A: LD (HL),A INC HL LD (HL),A INC HL LD (HL),A INC HL LD (HL),C INC HL INC C DJNZ A290A LD HL,T29C1 LD (HL),A INC HL LD (HL),A INC HL LD (HL),A INC HL LD (HL),A INC HL LD HL,T29C1 LD DE,D29DD LD BC,4 CALL A29AA LD HL,0 LD (D29DB),HL RET ; A2935: CALL A2941 RET Z LD L,A PUSH HL CALL A2941 POP HL LD H,A RET ; A2941: CALL A1773 JR Z,A2949 CP A RET ; A2949: PUSH AF LD HL,(D29DB) CALL A296B LD (D29DB),HL POP AF LD HL,D29DD INC (HL) RET NZ INC HL INC (HL) RET NZ INC HL INC (HL) RET ; A295F: LD HL,(D2A1C) LD B,A CALL A296B LD A,B CALL A296B LD A,B A296B: ADD A,L LD L,A RET NC INC H RET ; A2970: PUSH HL PUSH DE OR A A2973: LD A,(DE) ADC A,(HL) LD (DE),A INC DE INC HL DJNZ A2973 POP DE POP HL RET ; A298C: INC HL INC HL LD A,(HL) CP C RET NZ DEC HL LD A,(HL) CP D RET NZ DEC HL LD A,(HL) CP E RET ; A2999: LD C,B LD B,0 ADD HL,BC EX DE,HL ADD HL,BC A299F: DEC HL DEC DE LD A,(DE) CP (HL) RET NZ DEC C JR NZ,A299F CP (HL) RET ; A29AA: LD A,B OR C RET Z DEC BC LD A,(HL) LD (DE),A INC HL INC DE JR A29AA ; A29B5: LD A,B OR C RET Z DEC BC LD A,(HL) LD (DE),A DEC HL DEC DE JR A29B5 ; D29C0: DB 4 T29C1: DS 5 D29C6: DB 0FFH D29C7: DW 0 D29C9: DB 0 D29CA: DB 0 D29CB: DB 0 D29CC: DB 0 D29CD: DB 0 D29CE: DW 0 D29D0: DW 0 D29D2: DB 0 D29D3: DB 0 D29D4: DW 0 D29D6: DW 0 D29D8: DB 0 D29D9: DW 0 D29DB: DW 0 D29DD: DS 3 D29E0: DW 0 D29E2: DB 0 T29E3: DW 0 D29E5: DB 0 D29E6: DB 0 D29E7: DW 0 D29E9: DW 0 D29EB: DW 0 T29ED: DS 4 T29F1: DS 17 T2A02: DB 0 T2A03: DS 16 D2A13: DB 0 D2A14: DB 0 D2A15: DB 0 D2A16: DB 0 D2A17: DB 0 D2A18: DB 0 D2A19: DB 0 D2A1A: DB 0 D2A1B: DB 0 D2A1C: DW 0 D2A1E: DW 0 D2A20: DW 0 D2A22: DS 62 D2A60: DW 0 ; A2A62: LD A,C OR A RET Z LD A,B OR A RET Z LD E,B LD D,0 ADD HL,DE DEC HL OR A A2A6E: PUSH AF LD B,A LD E,L LD D,H A2A72: LD A,(HL) RRA LD (HL),A DEC HL DJNZ A2A72 LD L,E LD H,D POP AF DEC C JR NZ,A2A6E RET ; A2A82: LD A,B OR A JP Z,A2B25 LD (D2B2A),HL EX DE,HL LD (D2B2C),HL LD C,B LD L,C LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL INC HL LD (D2B32),HL LD HL,T2B35 LD DE,T2B3C LD B,C XOR A A2AA1: LD (HL),A LD (DE),A INC HL INC DE DJNZ A2AA1 LD HL,T2B35 LD (D2B2E),HL LD HL,T2B3C LD (D2B30),HL LD HL,(D2B2C) LD B,C XOR A A2ABA: OR (HL) INC HL DJNZ A2ABA OR A JR Z,A2B21 OR A A2AC5: LD B,C LD HL,(D2B2A) A2AC9: LD A,(HL) RLA LD (HL),A INC HL DJNZ A2AC9 LD HL,D2B32 DEC (HL) JR NZ,A2ADD INC HL DEC (HL) JP M,A2B25 A2ADD: LD HL,(D2B2E) LD B,C A2AE1: LD A,(HL) LD (HL),A INC HL DJNZ A2AE1 PUSH BC LD A,C LD (D2B34),A LD HL,(D2B30) LD B,H LD C,L LD HL,(D2B2E) EX DE,HL LD HL,(D2B2C) OR A A2AFB: LD A,(DE) SBC A,(HL) LD (BC),A INC HL INC DE INC BC LD A,(D2B34) DEC A LD (D2B34),A JR NZ,A2AFB POP BC CCF JR NC,A2AC5 LD HL,(D2B2E) EX DE,HL LD HL,(D2B30) LD (D2B2E),HL EX DE,HL LD (D2B30),HL JR A2AC5 ; A2B21: SCF JR A2B26 ; A2B25: OR A A2B26: LD HL,(D2B2E) RET ; D2B2A: DW 0 D2B2C: DW 0 D2B2E: DW 0 D2B30: DW 0 D2B32: DW 0 D2B34: DB 0 T2B35: DS 7 T2B3C: DS 7 ; A2B43: LD A,B OR A RET Z LD C,B LD B,0 ADD HL,BC EX DE,HL LD (D2BAB),HL LD HL,T2BAD ADD HL,BC LD (D2BA9),HL LD L,C LD H,B ADD HL,HL ADD HL,HL ADD HL,HL INC HL LD (D2BA7),HL LD B,C LD HL,T2BAD A2B62: LD (HL),0 INC HL DJNZ A2B62 OR A A2B6A: LD B,C LD HL,(D2BA9) A2B6E: DEC HL LD A,(HL) RRA LD (HL),A DJNZ A2B6E LD L,E LD H,D LD B,C A2B79: DEC HL LD A,(HL) RRA LD (HL),A DJNZ A2B79 JR NC,A2B98 PUSH DE LD HL,(D2BAB) EX DE,HL LD HL,T2BAD LD B,C OR A A2B8E: LD A,(DE) ADC A,(HL) LD (HL),A INC DE INC HL DJNZ A2B8E POP DE A2B98: LD HL,D2BA7 DEC (HL) JR NZ,A2B6A INC HL INC (HL) DEC (HL) RET Z DEC (HL) JR A2B6A ; D2BA7: DW 0 D2BA9: DW 0 D2BAB: DW 0 T2BAD: DS 83 ; Y2C00: DB 0 Y2C01: DW 0 CRCFLG: DB 0 .CPFL: DB 0 ; 1="C" COMMAND, 0=OTHERS (FOR CRC) DRIVE1: DB 0 DRIVE2: DB 0 USER1: DB 0 USER2: DB 0 SRCCRC: DW 0 NMBFLS: DW 0 Y2C0C: DB 0 Y2C0D: DW 0 Y2C0F: DW 0 FILNMB: DW 0 ; POINTER TO FILENAME ARRAY (FILE #) Y2C13: DW 0 Y2C15: DW 0 Y2C17: DW 0 Y2C19: DW 0 Y2C1B: DW 0 FILPTR: DW 0 Y2C1F: DW 0 Y2C21: DW 0 Y2C23: DW 0 Y2C25: DW 0 Y2C27: DW 0 BLKSZE: DB 0 FREEK: DW 0 TOTALK: DW 0 TAGTOT: DW 0 ; TOTAL K FILES TAGGED TAGTO1: DW 0 ; TOTAL FILES TAGGED IF 1K/BLOCK Y2C32: DB 0 Y2C33: DB 0 Y2C34: DW 0 RAMTOP: DW 0 Y2C38: DB 0 USER3: DB 0 Y2C3A: DB 0 Y2C3B: DB 0 Y2C3C: DB 0 Y2C3D: DW 0 CRCACC: DW 0 Y2C41: DW 0 Y2C43: DB 0 ; SRCFCB: DB 0 DS 8 SRCFCT: DS 3 Y2C50: DB 0 Y2C51: DB 0 Y2C52: DS 24 ; DSTFCB: DB 0 DS 8 DSTFCT: DS 3 Y2C76: DB 0 Y2C77: DS 25 ; FCB0: DB 0 DS 37 FCB1: DB 0 DS 37 CRCTBL: DS 512 Y2EDC: DW 0 Y2EDE: DW 0 Y2EE0: DS 3 Y2EE3: DS 10 Y2EED: DB 0 END