mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
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.
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
@@ -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,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"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user