Date : Fri, 18 Nov 1983 15:19:08 EST
From : Keith Petersen <w8sdz@brl>
Subject: RMACPAT.ASM - Improving RMAC
;****************************************************************
;
; Patches for MAC and RMAC
; ------------------------
;
; by George Blat
; Blat, Research + Development Corp.
; 8016 188th SW
; Edmonds, WA 98020
;
;
;****************************************************************
;
;
;The following changes are (c)1983 Blat R+D Corp. Permission is
;granted to use these patches only in non-commercial applications.
;MAC and RMAC are trademarks of Digital Research, Inc. which holds
;ownership and all rights to the original programs.
;
;****************************************************************
;
;
;Mac and Rmac are two reliable assemblers developed by Digital
;Research which have a good number of useful features. It seems
;natural to get the most out of them.
;
;Among the features that can be added to Mac and Rmac, are the
;ability to use the period '.' and the underscore '_' as part of
;symbol names such as labels, even as first character of the
;symbol. The underscore, for instance, makes a much better word
;separator than the dollar '$' sign when used in a multi-word
;label. In a dense program listing, it's certainly easier to find
;STAT_PORT than STAT$PORT, and @hl_to_de than @hl$to$de.
;
;By the same token, I don't agree with the decision of Digital
;Research of making the dollar sign a don't care character. It
;introduces confusion as it allows symbols that don't look the
;same to be equivalent.
;
;In addition, RMAC can be easily patched to create .REL files
;where the global (external) names have up to 7 active characters.
;This helps by allowing you to create more meaningful symbol names
;and therefore improve program legibility. This change is still
;entirely compatible with the industry standard Microsoft format.
;
;The following patches should be assembled with MAC (not RMAC)
;and the resulting hex file should be applied over the original
;programs with DDT, SID or ZSID. KEEP AN ARCHIVE COPY OF THE
;ORIGINAL MAC OR RMAC BEFORE PATCHING.
FALSE EQU 0
TRUE EQU NOT FALSE
RMAC EQU TRUE ;select one and only one of these
MAC EQU FALSE ;true
IF RMAC
GLOBAL7 EQU TRUE ;set to false if you don't want
;7 char globals
PATCHAREA EQU 13BH
DOLLARCOUNTS EQU 1D7AH ;set this to false if you like to
;keep the dollar as a don't care char
CHECKALFA EQU 1D9CH
TOUP EQU 2844H
ENDIF
IF MAC
COPYRITE EQU 103H ;shorten but keep the copyright notice
DOLLARCOUNTS EQU 1834H
CHECKALFA EQU 1853H
ENDIF
IF MAC
ORG COPYRITE
DB '(c)1977 DRI'
PATCHAREA:
ENDIF
IF RMAC
ORG PATCHAREA
ENDIF
CPI '.'
RZ
CPI '_'
RZ
CPI '?'
RZ
CPI '@'
RZ
IF RMAC
CALL TOUP
ENDIF
SUI 'A'
CPI 'Z'-'A'+1
CMC
RET
IF RMAC AND GLOBAL7
COMPARE EQU 12D6H
SETIT7 EQU 12DBH
ORG COMPARE
CPI 8 ;replaces cpi 7
ORG SETIT7
MVI A,7 ;replaces mvi a,6
ENDIF
IF DOLLARCOUNTS
ORG DOLLARCOUNTS
NOP ;replaces mov m,a
ENDIF
ORG CHECKALFA
CALL PATCHAREA ;replaces cpi 3f
CMC ;jz 1db1
SBB A ;cpi 40
RET ;jz 1db1, etc.
END