home *** CD-ROM | disk | FTP | other *** search
- ;
- ; MUST BE ASSEMBLED BY "MAC"
- ;
- ;MULTI-FILE ACCESS SUBROUTINE. ALLOWS PROCESSING
- ;OF MULTIPLE FILES (I.E. *.ASM) FROM DISK. THIS
- ;ROUTINE BUILDS THE PROPER NAME IN THE FCB EACH
- ;TIME IT IS CALLED. THIS COMMAND WOULD BE USED
- ;IN SUCH PROGRAMS AS MODEM TRANSFER, TAPE SAVE,
- ;ETC IN WHICH YOU WANT TO PROCESS SINGLE OR
- ;MULTIPLE FILES.
- ;
- ;JUST CALL "MFNAME" (Multiple File NAME) AND THE FCB
- ;WILL BE SET UP WITH THE NEXT NAME, READY TO
- ;DO NORMAL PROCESSING (OPEN, READ, ETC.)
- ;
- ;CARRY IS SET IF NO MORE NAMES CAN BE FOUND
- ;
- ;DEFINE DATA MOVE MACRO
- ;
- MOVE MACRO ?F,?T,?L,?I
- IF NOT NUL ?F
- LXI H,?F
- ENDIF
- IF NOT NUL ?T
- LXI D,?T
- ENDIF
- IF NOT NUL ?L
- LXI B,?L
- ENDIF
- IF NOT NUL ?I
- LOCAL ?B,?Z
- CALL ?Z
- ?B DB ?I
- ?Z POP H ;GET TO
- LXI B,?Z-?B
- ENDIF
- CALL MOVER
- MF SET -1 ;;SHOW EXPANSION
- ENDM
- ;
- ;DEFINE CP/M MACRO - CPM FNC,PARM
- ;
- CPM MACRO ?F,?P
- PUSH B
- PUSH D
- PUSH H
- IF NOT NUL ?F
- MVI C,?F
- ENDIF
- IF NOT NUL ?P
- LXI D,?P
- ENDIF
- CALL BDOS
- POP H
- POP D
- POP B
- ENDM
- ;
- ;------------------------------------------------
- ;
- ; MULTI-FILE ACCESS SUBROUTINE
- ;
- ;THE ROUTINE IS COMMENTED IN PSEUDO CODE,
- ;EACH PSEUDO CODE STATEMENT IS IN <<...>>
- ;
- MFNAME:
- ;<<INIT DMA ADDR, FCB>>
- CPM STDMA,80H
- XRA A ! STA FCBEXT
- ;<<IF FIRST TIME>>
- LDA MFFLG1 ! ORA A ! JNZ MFN01
- ; <<TURN OFF 1ST TIME SW>>
- MVI A,1 ! STA MFFLG1
- ; <<SAVE THE REQUESTED NAME>>
- MOVE FCB,MFREQ,12 ;SAVE ORIG REQ
- LDA FCB ! STA MFCUR ;SAVE DISK IN CURR FCB
- ; <<SRCHF REQ NAME>>
- MOVE MFREQ,FCB,12
- CPM SRCHF,FCB
- ;<<ELSE>>
- JMP MFN02
- MFN01:
- ; <<SRCHF CURR NAME>>
- MOVE MFCUR,FCB,12
- CPM SRCHF,FCB
- ; <<SRCHN REQ NAME>>
- MOVE MFREQ,FCB,12
- CPM SRCHN,FCB
- ;<<ENDIF>>
- MFN02:
- ;<<RETURN CARRY IF NOT FOUND>>
- INR A ! STC ! RZ
- ;<<MOVE NAME FOUND TO CURR>>
- DCR A ! ANI 3 ! ADD A
- ADD A ! ADD A ! ADD A ! ADD A
- ADI 81H ! MOV L,A ! MVI H,0
- PUSH H ;SAVE NAME POINTER
- MOVE ,MFCUR+1,11
- ;<<MOVE NAME FOUND TO FCB>>
- POP H ! MOVE ,FCB+1,11
- ;<<SETUP FCB>>
- XRA A ! STA FCBEXT
- ;<<RETURN>>
- RET
- ;
- ;MULTI-FILE ACCESS WORK AREA
- ;
- MFFLG1 DB 0 ;1ST TIME SW
- MFREQ DS 12 ;REQ NAME
- MFCUR DS 12 ;CURR NAME
- ;------------------------------------------------
- ;
- ;MOVE SUBROUTINE
- ;
- MOVER MOV A,M
- STAX D
- INX H
- INX D
- DCX B
- MOV A,B
- ORA C
- JNZ MOVER
- RET
- ;
- ;EQUATES USED BY MULTI-ACCESS SUBROUTINE
- ;
- SRCHF EQU 17
- SRCHN EQU 18
- BDOS EQU 5
- FCB EQU 5CH
- FCBEXT EQU FCB+12
- FCBRNO EQU FCB+32
-