TITLE FSET SUBTTL File parameter set .Z80 BDOS EQU 5 TFCB EQU 5CH TFCB2 EQU TFCB+10H CR EQU 13 LF EQU 10 ESC EQU 27 ERQ: LD A,(TFCB2+1) LD HL,PRMTBL+3 LD BC,4 CPDR JR NZ,INVPRM LD HL,PRMMTB ADD HL,BC RLC C RLC C LD (PRMPOS),BC LD A,(HL) LD (PRMMSK),A LD A,(TFCB2+2) LD HL,ASKFLG LD (HL),0 CP "?" JR NZ,NOT.? LD (HL),0FFH LD A,(TFCB2+3) NOT.?: CP " " JR Z,MAKFT INVPRM: LD DE,IVPMSG JR OUTBUF MAKFT: LD DE,TFCB LD C,17 ;Search first CALL BDOS CP 255 JR NZ,FILFND LD DE,NFMSG OUTBUF: LD C,9 ;Print string JP BDOS FILFND: LD HL,NAMBUF PUSH HL NXTFIL: RRCA RRCA RRCA AND 01100000B OR 10000001B LD L,A LD H,0 POP DE LD BC,11 LDIR PUSH DE LD C,18 ;Search next CALL BDOS CP 255 JR NZ,NXTFIL POP HL LD (HL),80H ;End of list indicator LD HL,NAMBUF SETCHK: LD (NBPOS),HL LD A,(PRMMSK) PUSH AF AND 7FH LD E,A LD D,0 ADD HL,DE POP AF AND 80H LD B,A LD A,(HL) AND 80H CP B JR NZ,NOTSAM CALL OUTNAM LD DE,SAMMSG CALL OUTBUF CALL PRMOUT JR NXTCHK NOTSAM: LD A,(HL) AND 7FH OR B LD (HL),A LD A,(ASKFLG) OR A JR NZ,ASK LD C,11 ;Console status CALL BDOS OR A JR Z,NOTABT LD DE,ABTMSG JR OUTBUF NOTABT: CALL OUTNAM CALL SETATR LD DE,SETMSG CALL OUTBUF CALL PRMOUT JR NXTCHK ASK: LD DE,ASKMSG CALL OUTBUF CALL OUTNAM LD DE,SETMSG CALL OUTBUF CALL PRMOUT LD A,"?" CALL CONOUT LD C,1 ;Console input CALL BDOS CP ESC RET Z AND 5FH ;Convert lowercase to uppercase CP "Y" CALL Z,SETATR NXTCHK: LD A,CR CALL CONOUT LD A,LF CALL CONOUT LD HL,(NBPOS) LD BC,11 ADD HL,BC LD A,(HL) OR A RET M JP SETCHK CONOUT: LD E,A LD C,2 ;Console output JP BDOS PRMOUT: LD HL,(PRMPOS) LD DE,POUTTB ADD HL,DE LD B,4 POUTLP: PUSH HL PUSH BC LD A,(HL) CALL CONOUT POP BC POP HL INC HL DJNZ POUTLP RET SETATR: LD HL,(NBPOS) LD DE,TFCB+1 LD BC,11 LDIR LD DE,TFCB LD C,30 ;Set file attributes JP BDOS OUTNAM: LD HL,(NBPOS) LD B,8 NXTCR2: LD A,(HL) AND 7FH CP " " JR Z,ENDNAM ;End of name PUSH HL PUSH BC CALL CONOUT POP BC POP HL INC HL DJNZ NXTCR2 ENDNAM: LD E,B LD D,0 ADD HL,DE LD A,(HL) AND 7FH CP " " RET Z ;No filetype PUSH HL LD A,"." CALL CONOUT ;Output type LD B,3 POP HL NXTCR3: LD A,(HL) AND 7FH CP " " RET Z PUSH HL PUSH BC CALL CONOUT POP BC POP HL INC HL DJNZ NXTCR3 RET NFMSG: DEFB "File(s) not found$" IVPMSG: DEFB "Invalid parameter$" SAMMSG: DEFB " already" SETMSG: DEFB " set to$" ASKMSG: DEFB "Do you want $" ABTMSG: DEFB "*** Aborted ***$" PRMTBL: DEFB "WRDS" POUTTB: DEFB " R/W R/O DIR SYS" PRMMTB: DEFB 8,8 OR 80H,9,9 OR 80H NBPOS: DEFS 2 PRMMSK: DEFS 1 ASKFLG: DEFS 1 PRMPOS: DEFS 2 NAMBUF: END ERQ