home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
turbodsg
/
mac
< prev
next >
Wrap
Text File
|
1994-07-13
|
65KB
|
5,082 lines
; 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
2BA9: DW 0
D2BAB: DW 0
T2BAD: DS 83
;
Y2C00: DB 0
Y2C01: DW 0
CRCFLG: DB 0
.CPFL: DB 0