Browse Source

ZCPRD&J and UNZIPZ4

Contributions from Lars Nelson:

- ZCPRD&J has been slightly enhanced and a couple minor bugs fixed.
- UNZIPZ4 generally handles modern ZIP compression algorithms.
pull/201/head
Wayne Warthen 5 years ago
parent
commit
c7e4978d44
  1. 2
      Doc/ChangeLog.txt
  2. BIN
      Source/Images/d_bp/u0/UNZIP154.COM
  3. BIN
      Source/Images/d_bp/u0/UNZIP186.COM
  4. BIN
      Source/Images/d_bp/u0/UNZIPZ4.COM
  5. BIN
      Source/Images/d_cpm22/u0/UNZIP154.COM
  6. BIN
      Source/Images/d_cpm22/u0/UNZIP186.COM
  7. BIN
      Source/Images/d_cpm22/u0/UNZIPZ4.COM
  8. BIN
      Source/Images/d_zsdos/u0/UNZIP154.COM
  9. BIN
      Source/Images/d_zsdos/u0/UNZIP186.COM
  10. BIN
      Source/Images/d_zsdos/u0/UNZIPZ4.COM
  11. 2
      Source/ZCPR-DJ/Build.cmd
  12. 262
      Source/ZCPR-DJ/zcpr.mac
  13. 2
      Source/ver.inc
  14. 2
      Source/ver.lib

2
Doc/ChangeLog.txt

@ -33,6 +33,8 @@ Version 3.1.1
- D?N: Added support for TMS V9958 VDU
- D?N: Added support for MSX keyboard
- D?N: Added support for RP5C01 RTC
- L?N: Slightly enhanced ZCPRD&J w/ a couple bug fixes
- L?N: UNZIPZ4 which handles most modern ZIP file compression algorithms
Version 3.1
-----------

BIN
Source/Images/d_bp/u0/UNZIP154.COM

Binary file not shown.

BIN
Source/Images/d_bp/u0/UNZIP186.COM

Binary file not shown.

BIN
Source/Images/d_bp/u0/UNZIPZ4.COM

Binary file not shown.

BIN
Source/Images/d_cpm22/u0/UNZIP154.COM

Binary file not shown.

BIN
Source/Images/d_cpm22/u0/UNZIP186.COM

Binary file not shown.

BIN
Source/Images/d_cpm22/u0/UNZIPZ4.COM

Binary file not shown.

BIN
Source/Images/d_zsdos/u0/UNZIP154.COM

Binary file not shown.

BIN
Source/Images/d_zsdos/u0/UNZIP186.COM

Binary file not shown.

BIN
Source/Images/d_zsdos/u0/UNZIPZ4.COM

Binary file not shown.

2
Source/ZCPR-DJ/Build.cmd

@ -11,5 +11,5 @@ set ZXBINDIR=%TOOLS%/cpm/bin/
set ZXLIBDIR=%TOOLS%/cpm/lib/
set ZXINCDIR=%TOOLS%/cpm/include/
zx M80 -=zcpr
zx M80 -=zcpr/l
zx L80 -zcpr,zcpr.bin/n/e

262
Source/ZCPR-DJ/zcpr.mac

@ -1,6 +1,8 @@
TITLE ZCPR Console Command Processor - Version D&J
SUBTTL Last Modified: 5 March 1994
; DATE 05/17/21 08:34:00
;
; TITLE ZCPR Console Command Processor - Version D&J
; SUBTTL Last Modified: 10 August 1997
; CP/M Z80 Command Processor Replacement (CPR) Version 1.0
; CCPZ CREATED AND CUSTOMIZED FOR ARIES-II BY RLC
; FURTHER MODIFIED BY RGF AS V2.0
@ -66,6 +68,13 @@
;
; Added PEEK 30 August 1993.
;
; Added CLS 10 August 1997 and fixed two bugs. One caused the system to
; hang if the command to log into another drive was given while logged
; into a drive from which the disk had been removed. The other caused
; a warm boot to return to the prior user area if the new user number
; had been selected using the USER command (although not if the user area
; had been changed using the du: command).
;
;******** Structure Notes ********
;
; This CPR is divided into a number of major sections. The following
@ -86,39 +95,40 @@
;
; 3 Utilities
; CRLF PRINTC PRINT PRINTS BELL
; CONOUT BREAK CHKETX ABORT READF
; READ WRITE DEFDMA DMASET SEARF
; SEARDE SEARN OPENF OPEN CLOSE
; CREATE BDOSFN SUBKIL DELETE TLOGIN
; DLOGIN LOGIN NEWUSR RSTUSR SETUSR
; BDOSEA BDOSJP BDOSBC BDOSDE
; CLS CONOUT BREAK CHKETX ABORT
; READF READ WRITE DEFDMA DMASET
; SEARF SEARDE SEARN OPENF OPEN
; CLOSE CREATE BDOSFN SUBKIL DELETE
; TLOGIN DLOGIN LOGIN NEWUSR RSTUSR
; SETUSR BDOSEA BDOSJP BDOSBC BDOSDE
;
; 4 CPR Utilities
; PROMPT REDBUF CNVBUF UCASE SDELM
; ADVAN SBLANK ADDAH NUMBER A2NUM
; HEXNUM USRNUM ERROR DIRPTR ULOGIN
; SCANER SCANT SCANF CMDSER SETUDB
; SCANER SCANT SCANF CMDSER
;
; 5 CPR-Resident Commands and Functions
; 5A DIR DIRPR PRFN
; 5B ERA
; 5C ERAQ PRNNF
; 5D SAK REPLY
; 5E BELL
; 5F LIST
; 5G TYPE PAGER
; 5H EJECT
; 5I SAVE
; 5J REN
; 5K USER SUSER
; 5L DFU
; 5M SCL
; 5N PEEK
; 5O POKE
; 5P JUMP
; 5Q COM
; 5R GO CLLPRG ERRLOG ERRJMP
; 5S GET MEMLD PRNLE
; 5E CLS
; 5F BELL
; 5G LIST
; 5H TYPE PAGER
; 5I EJECT
; 5J SAVE
; 5K REN
; 5L USER SUSER
; 5M DFU
; 5N SCL
; 5O PEEK
; 5P POKE
; 5Q JUMP
; 5R COM UPDATE
; 5S GO CLLPRG ERRLOG ERRJMP
; 5T GET MEMLD PRNLE
; BIOS BOOT
;
;
@ -148,8 +158,8 @@ REL EQU FALSE ;SET TO TRUE FOR MOVCPM INTEGRATION
;LEAVE ALL FALSE FOR SYSGEN IMAGE
;
BASE EQU 0 ;BASE OF CP/M SYSTEM
;P2DOS EQU 0E400H ;BASE OF BDOS/P2DOS
P2DOS EQU 0D800H ;BASE OF BDOS/P2DOS
;P2DOS EQU 0E400H ;BASE OF BDOS/P2DOS (original)
P2DOS EQU 0D800H ;BASE OF BDOS/P2DOS (Retro-Brew)
ZCPRSZ EQU 00800H ;SIZE OF ZCPR
P2DOSSZ EQU 00E00H ;SIZE OF P2DOS
BIOS EQU P2DOS+P2DOSSZ ;BASE OF BIOS
@ -244,7 +254,7 @@ SOFLG EQU 'S' ;LIST $SYS ONLY
;
; List and Type command customization equates
;
NLINES EQU 20 ;NUMBER OF LINES ON CRT PAGE
NLINES EQU 22 ;NUMBER OF LINES ON CRT PAGE
NLINEP EQU 60 ;NUMBER OF LINES ON LIST DEVICE
FFKILL EQU TRUE ;TRUE SUPPRESSES FF UNTIL FIRST CHARACTER
PGDFLG EQU 'P' ;TYPE AND LIST COMMAND DEFAULT TOGGLE
@ -255,14 +265,17 @@ NOSTAT EQU FALSE ;SET TO TRUE IF BIOS LISTST NOT IMPLEMENTED
BUFLEN EQU 80 ;SIZE OF COMMAND INPUT BUFFER
MAXUSR EQU 15 ;MAXIMUM USER NUMBER ACCESSIBLE
DEFUSR EQU 0 ;DEFAULT USER NUMBER FOR COM FILES
DEFDRV EQU 'A' ;DEFAULT DRIVE FOR COM FILES
SPRMPT EQU '$' ;CPR PROMPT INDICATING SUBMIT COMMAND
COMCHR EQU ';' ;BEGIN COMMENT CHARACTER
COMCHR EQU '%' ;BEGIN COMMENT CHARACTER
CMDCHR EQU ';' ;BEGIN NEXT COMMAND CHARACTER
NUMBASE EQU 'H' ;CHARACTER USED TO SPECIFY HEXIDECIMAL BASE
RECFLG EQU 'R' ;CHARACTER FOR SAVE COMMAND TO SAVE RECORDS
SUPRES EQU TRUE ;TRUE TO SUPPRESS USER NUMBER FOR USER 0
MULTPL EQU TRUE ;TRUE TO ALLOW MULTIPLE COMMANDS ON ONE LINE
REBOOT EQU TRUE ;TRUE TO INCLUDE BOOT COMMAND
CLSCHR EQU 1AH ;CHARACTER TO CLEAR TERMINAL SCREEN
ESC EQU 1BH ;VT100 LEAD-IN CHAR. (FOR 'CLS')
;
IF TEST
CPRMPT EQU '<' ;CPR PROMPT INDICATING TEST MODE
@ -300,7 +313,7 @@ TPA EQU BASE+0100H ;BASE OF TPA
IF COMLD OR TEST
LD HL,BGNXFR
LD DE,CPRLOC
LD BC,ENDLD-CPRLOC
LD BC,ENDLD-BGNXFR
LDIR
LD BC,(UDFLAG)
JP CPRLOC
@ -369,15 +382,26 @@ ENTRY:
; warm boot reloads ZCPR and destroys the contents of the command buffer.
; The multiple command feature may be turned off with the SCL command.
;
MBUFF: DEFB BUFLEN ;MAXIMUM BUFFER LENGTH
;MBUFF: DEFB BUFLEN ;MAXIMUM BUFFER LENGTH
MBUFF: DEFB BUFEND-CIBUFF ;MAXIMUM BUFFER LENGTH
CBUFF: DEFB 0 ;NUMBER OF CHARACTERS IN COMMAND LINE
CIBUFF: DEFB ' ' ;DEFAULT (COLD BOOT) COMMAND
DEFB 0 ;COMMAND STRING TERMINATOR
DEFB ' ZCPR-D&J of 5 March 1994 '
DEFB 0 ;TERMINATOR FOR DUMP IDENTIFICATION
DEFS BUFLEN-($-CIBUFF)+1
DEFW 0 ;SENTINEL FOR STACK END
DEFS 24 ;STACK AREA
CIBUFF: DB ' ' ;DEFAULT (COLD BOOT) COMMAND 13
DEFB 0 ;COMMAND STRING TERMINATOR 14
DEFB ' ZCPR-D&J of 17 May 2021 ' ;44
DEFB 0 ;TERMINATOR FOR DUMP IDENTIFICATION 45
; DEFS BUFLEN-($-CIBUFF)+1
db 0,0,0,0,0,0,0,0 ;53
db 0,0,0,0,0,0,0,0 ;61
db 0,0,0,0,0,0,0,0 ;69
db 0,0,0,0,0,0,0,0 ;77
db 0,0,0,0,0,0,0,0 ;85
db 0,0,0,0,0,0,0,0 ;93
db 0,0,0,0,0,0,0,0 ;101
db 0,0,0,0,0,0,0,0 ;109
BUFEND EQU $
; DEFW 0 ;SENTINEL FOR STACK END
db 0,0
; DEFS 24 ;STACK AREA
STACK EQU $ ;TOP OF STACK
;
; SUBMIT FILE CONTROL BLOCK
@ -394,22 +418,23 @@ SUBCR EQU SUBDN+32 ;CURRENT RECORD NUMBER
;
; COMMAND FILE CONTROL BLOCK
;
FCBDN: DEFS 1 ;DISK DRIVE
FCBFN: DEFS 8 ;FILE NAME
FCBFT: DEFS 3 ;FILE TYPE
FCBEX: DEFS 1 ;EXTENT NUMBER
FCBS1: DEFS 1 ;S1
FCBS2: DEFS 1 ;S2
FCBRC: DEFS 1 ;RECORD COUNT
FCBDM: DEFS 16 ;DISK GROUP MAP
FCBDN: db 0 ;DISK DRIVE
FCBFN: db 0,0,0,0,0,0,0,0 ;FILE NAME
FCBFT: db 0,0,0 ;FILE TYPE
FCBEX: db 0 ;EXTENT NUMBER
FCBS1: db 0 ;S1
FCBS2: db 0 ;S2
FCBRC: db 0 ;RECORD COUNT
FCBDM: db 0,0,0,0,0,0,0,0 ;DISK GROUP MAP
db 0,0,0,0,0,0,0,0
FCBCR: DEFS 1 ;CURRENT RECORD NUMBER
;
; Type and List Variables
;
CHRCNT: DEFS 1 ;CHARACTER COUNT FOR TYPE AND LIST
LNCNT: DEFS 1 ;LINE COUNT FOR TYPE AND LIST
TYPLST: DEFS 1 ;FLAG FOR TYPE OR LIST
TABCNT: DEFS 1 ;TAB COUNT FOR TYPE AND LIST
CHRCNT: db 0 ;CHARACTER COUNT FOR TYPE AND LIST
LNCNT: db 0 ;LINE COUNT FOR TYPE AND LIST
TYPLST: db 0 ;FLAG FOR TYPE OR LIST
TABCNT: db 0 ;TAB COUNT FOR TYPE AND LIST
SYSTST: DEFB 0 ;LIST SYSTEM FILES IN DIRECTORY FLAG
;
; General Variables
@ -417,7 +442,7 @@ SYSTST: DEFB 0 ;LIST SYSTEM FILES IN DIRECTORY FLAG
CIBPTR: DEFW CIBUFF ;POINTER TO COMMAND INPUT BUFFER
CIPTR: DEFW CIBUFF ;POINTER TO CURRENT CMD FOR ERROR REPORTING
TMPUSR: DEFB 0 ;TEMPORARY USER NUMBER
TDRIVE: DEFB 0 ;DEFAULT DRIVE
TDRIVE: DEFB 0 ;TEMPORARY DRIVE
DFUSR: DEFB DEFUSR ;DEFAULT USER
LDADR: DEFW TPA ;MEMORY LOAD ADDRESS
;
@ -435,11 +460,13 @@ CMDTBL:
DEFW USER
DC 'DFU'
DEFW DFU
DC 'PAGE'
DC 'FF' ; was 'PAGE'
DEFW EJECT
DC 'BELL'
DEFW RING
DC 'SAK'
DC 'CLS'
DEFW CLS
DC 'WAIT' ; was 'SAK' ("strike any key")
DEFW SAK
DC 'GO'
DEFW GO
@ -459,7 +486,7 @@ CMDTBL:
DEFW PEEK
DC 'POKE'
DEFW POKE
NCMNDS DEFL 17 ;NUMBER OF COMMANDS
NCMNDS DEFL 18 ;NUMBER OF COMMANDS
;
IF MULTPL
DC 'SCL'
@ -516,14 +543,11 @@ RS3:
JR Z,RESTRT ;YES, SKIP REST OF LINE
CALL SCANER ;PARSE COMMAND NAME FROM COMMAND LINE
JR NZ,RS4 ;ERROR IF NAME CONTAINS A "?"
CALL DEFDMA ;SET TBUFF TO DMA ADDRESS
CALL DLOGIN ;ASSURE PROPER DRIVE
CALL RSTUSR ;ASSURE PROPER USER NUMBER
CALL SETUDB ;SET UD BYTE TO MATCH USER/DRIVE
CALL CMDSER ;SCAN FOR CPR-RESIDENT COMMAND
CALL CMDSER ;SCAN FOR COMMAND
;
; ENTRY POINT FOR CONTINUED SCAN OF COMMAND LINE
;
CALL UPDATE ;UPDATE BDOS/SYSTEM PARAMETERS
CALL ADVAN ;GET ANY CHARACTER
JR Z,RESTRT ;NONE, END OF LINE
LD (CIPTR),DE ;UPDATE START OF LINE IN CASE ERROR
@ -1024,7 +1048,7 @@ SCAN4:
LD (HL),B ;SAVE DRIVE
LD B,8 ;MAX OF 8 CHARACTERS
XOR A ;CLEAR '?' COUNT
EX AF,AF ;AND SAVE
EX AF,AF' ;AND SAVE
CALL SCANF ;GET POSSIBLE NAME
CALL SCANT ;AND POSSIBLE TYPE
;
@ -1044,7 +1068,7 @@ SCAN4:
; SCAN COMPLETE -- DE POINTS TO DELIMITER BYTE AFTER TOKEN
;
LD (CIBPTR),DE
EX AF,AF ;GET NUMBER OF '?' IN FILENAME.TYP
EX AF,AF' ;GET NUMBER OF '?' IN FILENAME.TYP
RET
;
; EXTRACT FILE TYPE FROM POSSIBLE FILENAME.TYP
@ -1069,9 +1093,9 @@ SCAN12:
SCAN13:
CP '?' ;QUESTION MARK?
JR NZ,SCAN14 ;NO, JUST STORE CHARACTER
EX AF,AF ;GET QUESTION MARK COUNT
EX AF,AF' ;GET QUESTION MARK COUNT
INC A ;COUNT IT
EX AF,AF ;AND SAVE COUNT
EX AF,AF' ;AND SAVE COUNT
SCAN14:
INC DE ;POINT TO NEXT CHARACTER IN COMMAND LINE
LD (HL),A ;STORE CHARACTER IN FCBDN
@ -1097,15 +1121,6 @@ CMDSER:
LD A,(HL) ;LOOK FOR DRIVE SPEC
DEC A ;ADJUST FOR LOG IN
CALL P,TLOGIN ;LOG IN DRIVE
SETUDB:
LD A,(TMPUSR) ;GET CURRENT USER NUMBER
ADD A,A ;PLACE IT IN HIGH NIBBLE
ADD A,A
ADD A,A
ADD A,A
LD HL,TDRIVE ;ADD DEFAULT DRIVE NUMBER (LOW NIBBLE)
OR (HL)
LD (UDFLAG),A ;UPDATE USER/DRIVE BYTE
RET
CMS0:
OR (HL) ;DRIVE OR USER NUMBER
@ -1125,11 +1140,10 @@ CMS2:
LD A,(DE) ;NEXT CHARACTER IN INPUT COMMAND MUST BE <SP>
CP ' '
JR NZ,CMS4
LD A,(HL) ;FOUND COMMAND,
LD E,(HL) ;FOUND COMMAND,
INC HL ;LOAD ADDRESS,
LD H,(HL) ;AND
LD L,A ;JUMP TO IT
JP (HL) ;COMMAND IS CPR-RESIDENT
LD D,(HL) ;AND
JR CMS6 ;UPDATE SYSTEM DATA AND EXECUTE
CMS3:
BIT 7,(HL) ;END OF TABLE ENTRY?
INC HL
@ -1139,7 +1153,10 @@ CMS4:
INC HL
DJNZ CMS1 ;NOT TO END OF TABLE YET
CMS5:
JP COM ;COMMAND MAY BE DISK-RESIDENT
LD DE,COM ;LOAD DESTINATION AND UPDATE
CMS6:
PUSH DE ;PLACE ROUTINE ADDRESS ON STACK
JP UPDATE ;UPDATE SYSTEM DATA AND EXECUTE
;
;**** Section 5 ****
; CPR-Resident Commands
@ -1411,6 +1428,21 @@ REPL2:
RET
;
;Section 5E
;Command: CLS
;Function: To clear screen.
;Forms:
; CLS
;
CLS:
; LD A,CLSCHR ; Load clear screen character
; DEFB 21H ; and skip next instruction
; If a multi-character string is
; required to clear screen use:
CALL PRINT
DB ESC,'[2','J'+128
RET
;
;Section 5F
;Command: BELL
;Function: To ring terminal bell.
;Forms:
@ -1420,7 +1452,7 @@ RING:
LD A,BELL ; load bell into A
JP CONOUT ; and output it
;
;Section 5F
;Section 5G
;Command: LIST
;Function: To print specified file on list device.
;Forms:
@ -1437,7 +1469,7 @@ LIST:
;
JR TYPE1
;
;Section 5G
;Section 5H
;Command: TYPE
;Function: To display specified file on console.
;Forms:
@ -1560,8 +1592,8 @@ PAGER:
PAGE2:
JP BDOSJP ; return via bdos
;
;Section 5H
;Command: PAGE
;Section 5I
;Command: FF (was PAGE)
;Function: To eject a page on list device via a form feed.
;Forms:
; PAGE
@ -1579,7 +1611,7 @@ EJECT:
LD C,05H ; list output
JP BDOS ; output character and return via bdos
;
;Section 5I
;Section 5J
;Command: SAVE
;Function: To save the contents of TPA onto disk as a file. Number of
; pages or records is in decimal. Saved area begins at 100H.
@ -1628,7 +1660,7 @@ SAVE3:
SAVE4:
JP PRNLE ;PRINT 'NO SPACE' ERROR
;
;Section 5J
;Section 5K
;Command: REN
;Function: To change the name of an existing file.
;Forms:
@ -1670,7 +1702,7 @@ NAMERR:
REN2:
JP ABORT
;
;Section 5K
;Section 5L
;Command: USER
;Function: To change current user number; new user number is in decimal.
;Forms:
@ -1680,7 +1712,7 @@ USER:
CALL USRNUM ;EXTRACT USER NUMBER FROM COMMAND LINE
JP NEWUSR ;SET NEW USER NUMBER
;
;Section 5L
;Section 5M
;Command: DFU
;Function: To set the Default User Number for the command/file scanner; new
; default user number is in decimal.
@ -1692,7 +1724,7 @@ DFU:
LD (DFUSR),A ;PUT IT AWAY
RET
;
;Section 5M
;Section 5N
;Command: SCL
;Function: To force ZCPR to parse only a single command per line; reset
; to multiple command format at the next ^C.
@ -1709,7 +1741,7 @@ SINGLE:
ENDIF
;
;
;Section 5N
;Section 5O
;Command: PEEK
;Function: To display hex values beginning at a specified address.
;Forms:
@ -1756,7 +1788,7 @@ PRHEX:
JP CONOUT ; go display value
;
;
;Section 5O
;Section 5P
;Command: POKE
;Function: To poke a string of hex values into a set of consecutive addresses.
;Forms:
@ -1777,7 +1809,7 @@ POKE1:
JR POKE1 ; go for more
;
;
;Section 5P
;Section 5Q
;Command: JUMP
;Function: To call the program (subroutine) at the specified address
; without loading from disk.
@ -1788,7 +1820,7 @@ JUMP:
CALL HEXNUM ;GET LOAD ADDRESS IN HL
JR CLLPRG ;PERFORM CALL
;
;Section 5Q
;Section 5R
;Command: COM file processing
;Function: To load the specified COM file from disk and execute it.
;Forms:
@ -1808,7 +1840,7 @@ COM:
CALL MEMLD ;LOAD MEMORY WITH FILE SPECIFIED
;(NO RETURN IF ERROR OR TOO BIG)
;
;Section 5R
;Section 5S
;Command: GO
;Function: To call the program in the TPA without loading from disk.
; Same as JUMP 100H, but more convenient, especially when
@ -1869,14 +1901,24 @@ COM3:
; RUN LOADED TRANSIENT PROGRAM
;
CALL CRLF ;NEW LINE
CALL DEFDMA ;SET DMA TO 0080
CALL RSTUSR ;RESET TO PROPER USER NUMBER
UPDATE:
CALL DEFDMA ;SET DMA TO DEFAULT VALUE
CALL DLOGIN ;ASSURE PROPER DRIVE
CALL RSTUSR ;ASSURE PROPER USER NUMBER
LD A,E ;GET CURRENT USER NUMBER
ADD A,A ;PLACE IT IN HIGH NIBBLE
ADD A,A
ADD A,A
ADD A,A
LD HL,TDRIVE ;ADD DEFAULT DRIVE NUMBER (LOW NIBBLE)
OR (HL)
LD (UDFLAG),A ;UPDATE USER/DRIVE BYTE
;
; EXECUTION (CALL) OF PROGRAM (SUBROUTINE) OCCURS HERE
; EXECUTION (CALL) OF PROGRAM/SUBROUTINE/COMMAND OCCURS HERE
;
RET ;CALL TRANSIENT
;
;Section 5S
;Section 5T
;Command: GET
;Function: To load the specified file from disk to the specified address
;Forms:
@ -1897,9 +1939,9 @@ MEMLD:
LD (LDADR),HL ;SET LOAD ADDRESS
;
; MLA is a reentry point for a non-standard CP/M Modification
; This is the return point when the .COM (or GET) file is not found the
; first time, the Default User is selected for the second attempt
; and Drive A is selected for the final attempt.
; This is the return point when the .COM (or GET) file was not found
; so the Default Drive & User are selected for the final attempt
; to find the file.
;
MLA:
CALL ULOGIN ;LOG ANY USER
@ -1907,29 +1949,22 @@ MLA:
CALL OPENF ;OPEN COMMAND.COM FILE
JR NZ,MLA1 ;FILE FOUND - LOAD IT
;
; FILE NOT FOUND - SELECT DEFAULT USER
; FILE NOT FOUND - SELECT DEFAULT COM USER
;
LD A,L ;GET FCB USER
AND A ;DEFAULT USER?
JR NZ,MLA0 ;NO
LD HL,TMPUSR ;CURRENT USER SAME AS DEFAULT?
LD A,(DFUSR) ;GET DEFAULT USER
CP (HL)
SET 7,A ;MAKE INTO VALID USER NUMBER
LD (FCBS1),A ;PUT USER INTO FCB
JR NZ,MLA ;AND TRY AGAIN
;
; FILE NOT FOUND - SELECT DRIVE A IF DEFAULT WAS SOME OTHER DRIVE
; AND SELECT DEFAULT COM DRIVE. IF DEFAULT COM DRIVE ALREADY
; SELECTED, GIVE UP AND PRINT ERROR MESSAGE
;
MLA0:
LD A,(TDRIVE) ;DRIVE A DEFAULT?
AND A
LD A,DEFDRV-'@' ;A<= DEFAULT COM DRIVE
LD HL,FCBDN ;POINT TO DRIVE IN FCB
CP (HL) ;THE SAME?
JR Z,MLA3 ;YES, ERROR
XOR A
LD HL,FCBDN ;POINT AT DRIVE IN FCB
OR (HL) ;DRIVE ALREADY SPECIFIED?
LD (HL),1 ;SELECT DRIVE A
JR Z,MLA ;NO, GO GIVE IT A TRY
LD (HL),A ;PUT DEFAULT COM DRIVE IN FCB
JR MLA ;GO GIVE IT A TRY
MLA3:
CALL PRNNF ;CAN'T FIND FILE
JR PRNLE1
@ -1962,6 +1997,7 @@ PRNLE1:
IF (($-ENTRY) GT ZCPRSZ)
*ZCPR too large!!*
ENDIF
.DEPHASE
;
IF TEST
LISTST:
@ -1978,4 +2014,4 @@ ENDLD EQU $
END
 PUSH HL ;SAVE POI


2
Source/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.78"
#DEFINE BIOSVER "3.1.1-pre.79"

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 1
rup equ 1
rtp equ 0
biosver macro
db "3.1.1-pre.78"
db "3.1.1-pre.79"
endm

Loading…
Cancel
Save