home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oakland CPM Archive
/
oakcpm.iso
/
cpm
/
dirutl
/
ez10.lbr
/
EZ.AQM
/
EZ.ASM
Wrap
Assembly Source File
|
1986-04-07
|
8KB
|
235 lines
;---------------------------------------------------------------------
;
; TITLE:
; EZ.ASM (EASY) version 1.00 as of 08/16/83
;
; AUTHOR:
; Robert C. Kuhman
; Sysop of the "Cro'sNest" RCP/M - RBBS.
;
; COPYRIGHT STATUS:
; Copyright (c)1983 by the author, all rights reserved.
; Released to the PUBLIC DOMAIN for non-profit use only.
;
; DESCRIPTION:
; This program uses the CP/M autoload feature to rapidly
; execute any "COM" program through the use of "abbreviated"
; command files which cause autoloading of those programs,
; plus execution of any pre-selected options. ("EZ" has been
; designed to execute "COM's" that are used frequently, and
; which require lengthy strings of options and intructions.)
;
;
; EXAMPLES:
; 1) Assemble EZ.ASM, then rename it to "D.COM" for use
; instead of one of these much longer commands,...
;
; a) A0>DIR *.* $U0AD (SD-XX.COM Super Directory program)
; b) A0>DIR D:*.AQM $A (Search drive D for all AQM files)
; c) A0>DIR B:EZ.ASM $A (Search for this file)
;
; 2) How about using EWF.COM (ED Work File) instead of:
;
; a) A0>ED B:WF.ASM (Load work file for editing)
; b) A0>ED FILE.TXT (Edit any other file)
;
; 3) Perhaps,... TYPGR.COM to type a group of files:
;
; a) A0>TYPE THIS.ASM THAT.HLP OTHER.TXT (TYPE-17.COM)
; b) A0>TYPE THIS.AQM THAT.HQP OTHER.TQT (SQUEEZED FILES)
;
; 4) Even simplify use of MAC to assemble this program
; with: MACWF.COM (MAC Working File)
;
; a) A0>MAC B:WF $PZSZ (MAC assemble Working File)
; b) A0>ASM B:EZ.BBX (ASM assemble this EZ file)
;
; and... LDWF.COM (Load Working File)
;
; a) A0>LOAD B:WF (Working File)
; b) A0>LOAD B:EZ (EZ)
;
; etc.
;
; USAGE:
; EZ.COM (renamed to suit the requirement) will allow
; the user to greatly abbreviate his command line
; inputs by setting up one or more "EZ" programs.
; Once renamed (something like "D.COM" for instance),
; EZ will then load any lengthy command line so that
; the CCP (or ZCPR) can act upon it. This result is
; obtained by "fooling" CP/M into "thinking" that
; the user typed in the entire command line. It's EZ!
; e.g. A0>D <return> ...Might load "DIR *.* $U0AD"
; The called program must of course, also be present.
; If EZ is to be used with standard CP/M, the EZ file
; MUST reside on AND be executed from the default
; disk drive. The "default" drive is the drive named
; in the CCP's prompt "A>". Use ZCPR to execute "EZ"
; from any drive. The author recommends use of ZCPR.
;
; Examples: CP/M ---> A>EZ [CR]
; ZCPR ---> D0>B:EZ [CR]
;
; Note: [CR] = "Carriage Return"
;
; ADVANTAGES:
; There are probably more uses for this technique than those
; which have occured to me. Let me point out some of the most
; obvious features.
;
; 1) Commands up to maximum length of the CP/M command buffer
; can be executed with a one character command. This, in
; effect emulates the power of programmed "soft-keys" found
; on the best, most expensive terminals.
;
; 2) Repeated entry into an editor to modify a textfile becomes
; a much less tedious task, as does assembly and loading.
;
; 3) It is faster than a SUBMIT file for such processing, but
; note that the "calling" programs generated from EZ.ASM
; may be used with SUBMIT.
;
; 4) Program does not create any extra files during execution
; like the $$$.SUB temporary file (no disk space wasted).
;
; 5) Each EZ.COM "calling" program runs very fast and is small.
; It executes invisibly in the sense that it loads itself,
; and then the called program (plus all options) as if ONLY
; the called program and options had been executed.
;
; 6) For those using a standard CP/M version, drive specifiers
; can be included into each EZ "calling" program - thereby
; avoiding the common errors "NO FILE",and "FILE NOT FOUND".
;
; 7) In instances where disk space is limited there may be some
; special advantage in placing only the 1-2K "calling" files
; onto a work disk. These then execute some larger programs
; on another drive. The remaining space is thus conserved
; for allocation to the subject file which is being acted
; upon by the larger program.
;
; BE FOREWARNED:
; There are some minor problems to be aware of before
; attempting to use EZ. Firstly, there are some CP/M
; implementations which cause the autoload function
; to disable itself once it has been used to load CP/M
; and a full function BIOS from a CPMXX.COM file. Next,
; those same CP/M versions are likely to cause the drive
; and user to be reset to "A>". Repeating, if EZ is run
; under an unmodified CP/M (standard CCP), the program
; MUST reside on AND be executed from the default disk
; drive. Use of ZCPR will solve all of these problems,
; if they exist.
;
; OTHER USES:
; This program may also be used with MBASIC to autoload
; both MBASIC and a saved 'BAS' file (assuming the
; user does not have BASCOM for compilation). This
; technique can be especially useful for RCP/M Sysops
; who may wish to load a LOGIN.BAS or RBBS.BAS program.
;
; CREDITS:
; Based in part, on an idea from Tim Gary, Los Altos, CA.
;
; ASSEMBLY:
; Assemble with ASM.COM or MAC.COM (One Z80 instruction
; can be used, and it is included as a "DB" statement).
;
;---------------------------------------------------------------------
;
TRUE: EQU -1
FALSE: EQU NOT TRUE
;
; USER DEFINED EQUATES
;
Z80CPU: EQU TRUE ;TRUE IF Z80 CPU CARD, ELSE FALSE
;
ZCPR: EQU TRUE ;TRUE IF USING ZCPR, ELSE FALSE
;
CPMBAS: EQU 0000H ;CP/M BASE ADDRESS
;
; END USER DEFINED EQUATES
;
ORG CPMBAS+100H ;CP/M EXECUTION ADDRESS
JMP START
;
; THE COMMAND LINE TO EXECUTE IS THE NEXT "DB" DEFINITION.
; IT MAY EQUAL CP/M'S COMMAND BUFFER IN LENGTH.
;
CMD: EQU $ ;MARKER, DO NOT REMOVE
;
DB 'A:MAC B:EZ $PZSZ' ;<--- COMMAND LINE
;
; OTHER EXAMPLES,...
;
; DB 'A:ASM B:EZ.BBX ;ASSEMBLE THIS FILE
; DB 'A:LOAD B:EZ' ;LOAD THIS FILE.HEX
; DB 'A:DIR *.* $U0AD' ;RCPM DIRECTORY PROGRAM
; DB 'A:MBASIC LOGIN' ;RCPM LOGIN.BAS & MBASIC LOAD
; DB 'A:MBASIC RBBS' ;RCPM RBBS.BAS & MBASIC LOAD
;
DB 0 ;DO NOT REMOVE
ENDCMD: EQU $ ;MARKER, DO NOT REMOVE
;
; ASSEMBLE COPYRIGHT INTO HEX FILE FOR LOAD
;
CYRGHT: DB 'COPYRIGHT (C)1983 ROBERT KUHMAN'
;
; MAIN PROGRAM
;
START: LHLD 1 ;GET WBOOT ADDR
MOV A,H ;GET HI ADDR
SUI 16H ;SUBTRACT 1600H
MOV H,A ;HL HAS CCP ADDRESS+3
SHLD CCP3 ;STORE CCP ADDRESS+3
;
INX H ;CCP + 4
INX H ;CCP + 5
INX H ;CCP + 6
INX H ;CCP + 7
;
MVI A,ENDCMD-CMD-1 ;LENGTH OF COMMAND LINE
MOV M,A ;PUT IT AT CCP + 7
;
INX H ;CCP + 8
XCHG ;DE HAS CCP + 8 DESTINATION
LXI H,CMD ;HL HAS COMMAND LINE ADDR
LXI B,ENDCMD-CMD ;BC HAS NUMBER BYTES TO MOVE
;
IF Z80CPU ;Z80 CPU AVAILABLE
DB 0EDH,0B0H ;Z80 LDIR INSTRUCTION HERE
ENDIF ;Z80
;
IF NOT Z80CPU ;EMULATE LDIR INSTRUCTION FOR 8080 CPU
MOVE: MOV A,M ;MOVE BYTE
STAX D ;MOVE IT TO ADDRESS IN DE
INX H ;INCREMENT TO NEXT BYTE
INX D ;INCREMENT TO NEXT DESTINATION
DCX B ;SUBTRACT ONE OFF OF COUNT IN BC
MOV A,C ;CHECK IF DONE
ORA B ;OR B ONTO C IF RESULT ZERO, DONE
JNZ MOVE ;GET ANOTHER BYTE TO MOVE
ENDIF ;END OF LDIR EMULATION
;
IF ZCPR ;USING ZCPR?
LDA 04H ;GET PRESENT USER/DRIVE
ENDIF ;ZCPR
;
IF NOT ZCPR ;STD CP/M
MVI A,00H ;DRIVE A> USER 0
ENDIF ;STD CP/M
;
MOV C,A ;MOVE A INTO C
LHLD CCP3 ;GET CCP ADDRESS + 3
DCX H ;DECREMENT DOWN TO CCP BASE
DCX H
DCX H ;HL HAS CCP BASE
PCHL ;JUMP THERE
;
CCP3: DS 2
;
; END OF PROGRAM
;