home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol018
/
displayp.asm
< prev
next >
Wrap
Assembly Source File
|
1984-04-29
|
2KB
|
103 lines
;
; DISPLAYP.ASM
; by Keith Petersen, W8SDZ
; (revised 11/22/80)
;
;This patch fixes DISPLAY.COM so it will not accept wild-cards,
;distribution-tagged files, SYS files, and files with '#' as the
;last character of the file type. Compatible with CP/M 1.4 or 2.x.
;
BDOS EQU 05H
FCB EQU 5CH
OPEN EQU 15
CR EQU 0DH
LF EQU 0AH
ENTRY EQU 121H ;DISPLAY.COM ENTRY ADDRESS
;
ORG 100H
;
JMP PATCH
;
ORG 821H
;
;Check for ambiguous file names
;
PATCH LXI H,FCB ;POINT TO FCB
MVI B,11 ;NR OF CHARS TO CHECK
;
LOOP INX H ;POINT TO NEXT CHAR
MOV A,M ;GET CHAR
CPI '?' ;WAS IT A '?'
JZ WERROR ;YES, EXIT WITH ERROR MSG
DCR B ;ONE LESS TO CHECK
JNZ LOOP ;NOT DONE, GO GET MORE
;
;Check for private file type
;
CPI '#' ;WAS LAST CHARACTER A '#' ?
JZ OPENOT ;YES, PRINT ERROR AND EXIT
;
;Check for .COM file, which can't be printed
;
CPI 'M' ;WAS LAST CHAR AN 'M'?
JNZ OBJCHK ;IF NOT, CHK FOR '.OBJ' TYPE
DCX H
MOV A,M ;CHK NEXT
CPI 'O' ;AN 'O'?
JNZ OPENFIL ;IF NOT, GO OPEN FILE
DCX H
MOV A,M ;WAS 'O', CHK NEXT CHAR
CPI 'C' ; 'C' AS IN '.COM'?
JNZ OPENFIL ;IF NOT, GO OPEN FILE
CALL ERXIT ;EXIT W/MESSAGE
DB '++CAN''T DISPLAY .COM FILES$'
;
;Check for .OBJ file, which can't be printed
;
OBJCHK CPI 'J' ;WAS LAST CHAR AN 'J' THEN?
JNZ OPENFIL ;IF NOT, GO OPEN FILE
DCX H
MOV A,M ;MIGHT BE '.OBJ', CHK NEXT CHR
CPI 'B' ;IS IT A 'B'?
JNZ OPENFIL ;IF NOT, GO OPEN FILE
DCX H
MOV A,M ;WAS, CHK FIRST CHAR
CPI 'O' ; 'O' AS IN '.OBJ'?
JNZ OPENFIL ;IF NOT, GO OPEN FILE
CALL ERXIT ;EXIT W/MESSAGE
DB '++CAN''T DISPLAY .OBJ FILES$'
;
;Open the file to get attributes into FCB
;
OPENFIL LXI D,FCB ;POINT TO FILE
MVI C,OPEN ;GET FUNCTION
CALL BDOS ;OPEN IT
INR A ;OPEN OK?
JZ ENTRY ;..NO, LET DISPLAY GIVE ERROR MSG
;
;Check for SYS file
;
LDA FCB+10 ;GET SYS ATTRIBUTE
ANI 80H ;ISOLATE ATTR BIT
JNZ OPENOT ;IT'S SYS, EXIT
;
;Check for distribution-protected (tagged) file
;
LDA FCB+1 ;FIRST CHAR OF FILE NAME
ANI 80H ;CHECK BIT 7
JZ ENTRY ;IT WAS OFF, EXIT TO DISPLAY
;
OPENOT CALL ERXIT ;EXIT W/MESSAGE
DB '++FILE IS NOT FOR DISTRIBUTION, SORRY$'
;
WERROR CALL ERXIT
DB '++CAN''T USE WILD CARDS$'
;
;Exit with error message
;
ERXIT POP D ;GET MSG ADRS
MVI C,9
JMP BDOS ;PRINT IT THEN RETURN TO CCP
;
END