mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
4.0 KiB
181 lines
4.0 KiB
;
|
|
; Command File to Assemble ZEX by Richard Conn
|
|
;
|
|
; The following files are assumed:
|
|
; ED.COM, MAC.COM, ZSID.COM
|
|
; The following resident commands are assumed:
|
|
; ERA, REN, IF, FI
|
|
;
|
|
|
|
;
|
|
; 1. Test for Needed Files
|
|
;
|
|
if exist zex.asm
|
|
if exist a:rels.utl
|
|
|
|
;
|
|
; 2. Erase Any Files from Previous Executions
|
|
;
|
|
ERA ZEX*.BAK
|
|
ERA ZEX*.HEX
|
|
ERA ZEX*.SYM
|
|
|
|
;
|
|
; 3. Create ZEX30.LIB for Assembly of
|
|
; ORG 0 Relocated Code Segment
|
|
;
|
|
ED ZEX30.LIB
|
|
#A
|
|
#K
|
|
I
|
|
ZEXBASE EQU FALSE ;SUPPRESS ZEX INITIATOR CODE
|
|
ZEXREL EQU 0 ;SET RELOCATED CODE SEGMENT TO ORG 0
|
|
^Z
|
|
E
|
|
|
|
;
|
|
; 4. Assemble only ORG 0 Relocated Code Segment
|
|
;
|
|
MAC ZEX $$PZ
|
|
|
|
;
|
|
; 5. Rename Files from Step 4
|
|
;
|
|
REN ZEX300.HEX=ZEX.HEX
|
|
REN ZEX300.SYM=ZEX.SYM
|
|
|
|
;
|
|
; 6. New ZEX30.LIB for Assembly of
|
|
; ORG 100H Relocated Code Segment
|
|
;
|
|
ED ZEX30.LIB
|
|
#A
|
|
#K
|
|
I
|
|
ZEXBASE EQU FALSE ;SUPPRESS ZEX INITIATOR CODE
|
|
ZEXREL EQU 0100H ;SET RELOCATED CODE SEGMENT TO ORG 100H
|
|
^Z
|
|
E
|
|
|
|
;
|
|
; 7. Assemble only ORG 100H Relocated Code Segment
|
|
;
|
|
MAC ZEX $$PZ SZ
|
|
|
|
;
|
|
; 8. Rename File from Step 7
|
|
;
|
|
REN ZEX301.HEX=ZEX.HEX
|
|
|
|
;
|
|
; 9. New ZEX30.LIB for Assembly of
|
|
; ZEX Initiator Code Only
|
|
;
|
|
ED ZEX30.LIB
|
|
#A
|
|
#K
|
|
I
|
|
ZEXBASE EQU TRUE ;ENABLE ZEX INITIATOR CODE
|
|
ZEXREL EQU 0 ;RESET RELOCATED CODE SEGMENT TO ORG 0
|
|
^Z
|
|
E
|
|
|
|
;
|
|
; 10. Assemble ZEX Initiator Code Only
|
|
;
|
|
MAC ZEX $$PZ
|
|
|
|
;
|
|
; 11. Use ZSID and RELS.UTL to Create ZEX.COM
|
|
;
|
|
; [note: If only REL.UTL is available, comment out the lines
|
|
; starting with IZEX.COM below and change the line
|
|
; SID RELS.UTL to SID REL.UTL and a SAVE 10 ZEX.COM
|
|
; must be added at the end of this file.]
|
|
;
|
|
; ZEX.HEX contains ZEX Initiator Code
|
|
; ZEX.SYM contains symbols for SID for ZEX Initiator Code
|
|
;
|
|
; ZEX300.HEX contains ZEX ORG 0 Relocated Code Segment
|
|
; ZEX300.SYM contains symbols for SID for ZEX ORG 0 Rel Code
|
|
;
|
|
; ZEX301.HEX contains ZEX ORG 100H Rel Code Segment
|
|
;
|
|
; BEGREL is the symbol for the start of the Rel Code
|
|
; Segment in ZEX.COM
|
|
;
|
|
; DRVERL is the symbol for the length of the Rel Code
|
|
; Segment
|
|
;
|
|
; DRVL8 is the symbol for the length of the storage
|
|
; needed for the relo table bit map to be created
|
|
; by RELS.UTL
|
|
;
|
|
; RELOCL is the symbol for the DW in ZEX.COM that will
|
|
; contain the length of the Relocated Code Segment
|
|
;
|
|
;
|
|
; 11A. SID is invoked and the .SYM files for the ORG 0 Rel Code
|
|
; Segment and the Initiator Code Segment are loaded.
|
|
;
|
|
; 11B. The DW at symbol RELOCL is updated with the value of
|
|
; DRVERL from the ORG 0 Rel Code Segment.
|
|
;
|
|
; 11C. Memory for the two copies of the Relocated Code Segment
|
|
; (ORG 0 and ORG 100H) and the rel table bit map is zeroed.
|
|
;
|
|
; 11D. The ORG 0 Relocated Code Segment is loaded starting at
|
|
; location BEGREL.
|
|
;
|
|
; 11E. The ORG 100H Relocated Code Segment is loaded after the
|
|
; segment loaded in step C plus the length of the rel
|
|
; table bit map.
|
|
;
|
|
; 11F. RELS.UTL routine SETADRS sets the starting addresses of
|
|
; the two Relocated Code Segments for creation of the rel
|
|
; table bit map.
|
|
;
|
|
; 11G. RELS.UTL routine SETLEN sets the length of the Relocated
|
|
; Code Segment and builds the relocation table bit map.
|
|
;
|
|
; 11H* RELS.UTL routine SAVE saves the EX Initiator Code Segment,
|
|
; the ORG 0 Relocated Code Segment, and the rel table
|
|
; bit map created by RELS.UTL.
|
|
;
|
|
; * [note: not used if only REL.UTL is available]
|
|
;
|
|
; 11I. CP/M is returned to by G0.
|
|
;
|
|
; 11J** SAVE 10 ZEX.COM saves the ZEX Initiator Code Segment,
|
|
; the ORG 0 Relocated Code Segment, and the rel table
|
|
; bit map created by REL.UTL.
|
|
;
|
|
; ** [note: used ONLY if REL.UTL is used]
|
|
;
|
|
ZSID A:RELS.UTL
|
|
IZEX.HEX ZEX300.SYM
|
|
R
|
|
I* ZEX.SYM
|
|
R
|
|
SW.RELOCL
|
|
.DRVERL
|
|
.
|
|
F.BEGREL .BEGREL+.DRVERL+.DRVL8+.DRVERL 0
|
|
IZEX300.HEX
|
|
R.BEGREL
|
|
IZEX301.HEX
|
|
R.BEGREL+.DRVERL+.DRVL8-100
|
|
C.SETADRS .BEGREL .BEGREL+.DRVERL+.DRVL8
|
|
C.SETLEN .DRVERL .BEGREL+.DRVERL
|
|
IZEX.COM
|
|
C.SAVE 100 .BEGREL+.DRVERL+.DRVL8
|
|
G0
|
|
;
|
|
; 12. Clean Up Files on Disk and Terminate IFs
|
|
;
|
|
ERA ZEX*.BAK
|
|
ERA ZEX*.HEX
|
|
ERA ZEX*.SYM
|
|
ERA ZEX30.LIB
|
|
fi;fi
|
|
|