[net.micro.cpm] Fixing MAC for lower case

W8SDZ%mit-mc@sri-unix.UUCP (11/08/83)

From:  Keith Petersen <W8SDZ@mit-mc>

The following is forwarded from my RCPM:

---
TOPIC :  HOW TO MODIFY MAC.COM TO NOT CHANGE LOWER-CASE TO UPPER-CASE
FROM  :  IRVIN M. HOFF
DATE  :  22 OCT 82

     MAC.COM (by Digital Research) is one of the most popular assemblers
used with CP/M.  It has one feature that most people do not like -- when
making a print file (FILENAME.PRN) it automatically converts any lower-
case characters to upper-case.

     Neither ASM.COM nor RMAC.COM by the same firm does that.

     There are two ways to modify MAC.COM to approach this problem.
Changing address 165C from C8 to D0 will convert any lower-case source
code to upper, leaving DB strings and comments alone.  (1st example
below).  Changing 1663 from E6 to 5F will leave all the lower case
comments alone, will convert all DB strings to upper case, but will
toss out any lower case code that does not agree with labels that
are also lower case.  (second example.)
1st example:  leaves all comments and DB strings alone     
===================================================
 
1655  47                 MOV    B,A
1656  3A 05 30           LDA    3005
1659  FE 03              CPI    03
165B  78                 MOV    A,B
165C  C8                 RZ

     Change the RZ (C8) to a RNC (D0)

                   Using DDT or SID:

165C  C8 D0

A>SAVE 46 MAC.COM

      This will convert any source code not in a string from lower to
upper, and not bother any comment areas or DB strings.  It's as close
as you can get easily, to leaving all lower case alone. 

2nd example:  leaves all comments alone, but throws out lower case
              source code including strings that do not match.
===================================================
1663  E6 5F                  (ANI  5FH)

                   Using DDT or SID, change to:

1663  E6 7F                  (ANI  7FH)

A>SAVE 46 MAC.COM            (new, normal version)


     This prevents the lower-case from being changed to upper-case.
For a complete disassembly of that area:


1655  47        MOV   B,A      ;Put the char. into 'B' temporarily
1656  3A 05 30  LDA   ABORT    ;See any request to quit
1659  FE 03     CPI   03
165B  78        MOV   A,B      ;Get the char. back again
165C  C8        RZ             ;Exit with the char. if a 03
165D  FE 61     CPI   61H      ;Less than lower-case alpha char.?
165F  D8        RC             ;If less, ignore
1660  FE 7B     CPI   7AH+1    ;More than lower-case alpha char.?
1662  D0        RNC            ;If more, ignore
1663  E6 5F     ANI   5FH      ;Otherwise change to upper-case
1665  C9        RET            ;Finished

--end--