home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG029.ARK / NOTATE.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  3KB  |  123 lines

  1.     TITLE    'NOTATE - ADD COMMENTS TO ASSEMBLER PROGRAM'
  2. ;
  3.     ORG    100H
  4. ;
  5. ;    INVOKED BY:    NOTATE <FILENAME>
  6. ;    INPUT FILE:    <FILENAME>.ASM
  7. ;    OUTPUT FILE:    <FILENAME>.ASM
  8. ;            INPUT FILE IS RENAMED TO <FILENAME>.BAK
  9. ;
  10. ;    EACH LINE OF THE INPUT FILE IS DISPLAYED, AND THE
  11. ;    USER IS PROMPTED FOR A COMMENT.  IF A COMMENT IS
  12. ;    ENTERED, IT IS INSERTED IN THE FILE.  THE PROCESS
  13. ;    MAY BE TERMINATED BY ENTERING ^Z AS A COMMENT.
  14. ;
  15. ;    CP/M MACRO LIBRARIES:
  16.     MACLIB    NCOMPARE
  17.     MACLIB    SYMSTACK
  18.     MACLIB    SEQIO
  19.     MACLIB    DOWHILES
  20.     MACLIB    WHENS
  21. ;
  22. ;    ADDITIONAL MACROS:
  23. READ    MACRO    F,X        ;;READ FRNM FILE F INTO X
  24.     GET    F
  25.     STA    X
  26.     ENDM
  27. ;
  28. WRITE    MACRO    F,X        ;;WSITE FROM X TO FILE F
  29.     LDA    X        ;; AND THE CONSOLE
  30.     PUT    F
  31.     LDA    X
  32.     PUT    CON
  33.     ENDM
  34. ;
  35. NXTCHR    MACRO    I,O,C        ;;BUMP CHARACTER BEINF PROCESSED
  36.     WRITE    O,C        ;; OUTPUT FILE O
  37.     READ    I,C        ;; INPUT FILE C
  38.     ENDM
  39. ;
  40.     LHLD    @BDOS+1    ;SET STACK AT TOP OF TPA
  41.     DCX    H
  42.     SPHL
  43. ;
  44. ;    OPEN SOURCE FILE
  45.     FILE    INFILE,SOURCE,,1,ASM,4096
  46. ;    OPEN TEMPORARY OUTPUT FILE
  47.     FILE    OUTFILE,DEST,,1,$$$,4096
  48. ; ;    DO FIRST INPUT
  49.     READ    SOURCE,CHAR
  50. ;
  51. ;    NOW EXECUTE MAIN LOOP UNTIL EOF
  52.     DOWHILE    CHAR,NEQ,%EOF    ;LOOP UNTIL EOF
  53.         DOWHILECHAR,EQL,%';'
  54.             DOWHILE    CHAR,NEQ,10    ;SKIP COMMENTED LINES
  55.                 NXTCHR    SOURCE,DEST,CHAR
  56.                 ENDDO
  57.             NXTCHR    SOURCE,DEST,CHAR
  58.             ENDDO
  59.         WHEN    CHAR,EQL,13    ;FOUND END OF A LINE
  60.         LXI    D,PROMPT    ; PROMPT FOR COMMENT
  61.         MVI    C,9    ; WIUH TAB AND SEMICOLON
  62.         CALL    @BDOS
  63.         LXI    H,COMBUF    ;INPUT THE COMMENT
  64.         MVI    M,128
  65.         PUSH    H
  66.         XCHG
  67.         MVI    C,10
  68.         CALL    @BDOS
  69.         POP    H
  70.         INX    H
  71.         PUSH    H
  72.         MOV    A,M
  73.         WHEN    COMSIZ,EQL,1    ;SINGME CHAR?
  74.             WHEN    COMONE,EQL,%EOF    ;CTL-Z?
  75.                 POP    H
  76.           !     DOWHILE    CHAR,NEQ,%EOF
  77.                 LDA    CHAR    ;COPY REST OF FILE WITH
  78.                 PUT    DEST    ; NO FURTHER COMMENTS
  79.                 READ    SOURCE,CHAR
  80.                 ENDDO
  81.                 JMP    CLOSUP    ; AND EXIT
  82.                 ENDW
  83.           ! ENDW
  84.         WHEN    COMSIZ,NEQ,0    ;OUTPUT TAB AND SEMICOLON
  85.             MVIA,9    ; IF A COMMENT WAS ENTERED
  86.             PUT    DEST
  87.             MVI    A,';'
  88.             PUT    DEST
  89.             ENDW
  90.         DOWHILE    COMSIZ,GTR,0    ;INSERT THE COMMENT
  91.             POP    H
  92.             INX    H
  93.             PUSH    H
  94.             MOV    A,M             PUT    DEST
  95.             LXI    H,COMSIZ
  96.             DCR    M
  97.             ENDDO
  98.         POP    H
  99.         ENDW
  100.         NXTCHR    SOURCE,DEST,CHAR    ;GET NEXT CHARACTER
  101.         ENDDO    ;END OF MAIN LOOP
  102. ;
  103. ;    CLOSE AND SWITCH FILES
  104. CLORUP:    FINIS    DEST    ;CLOSE OUTPUT FILE
  105.     FILE    SETFILE,BACKUP,,1,BAK    :CREATE .BAK FCB
  106.     ERASE    BACKUP    ;DELETE OLD BACKUP IF ANY
  107.     RENAME    BACKUP,SOURCE    ;RENAME INPUT FILE TO .BAK
  108.     RENAME    SOURCE,DEST    ;RENAME OUTPUT TO INPUT
  109. ;
  110. ;    ALL DONE, EXIT
  111.     JMP    0
  112. ;
  113. CHAR:    DS    1    ;HOLDS CURRENT CHARACTER FROM SOURCE FILE
  114. COMBUF:    DS    130    ;INPUT BUFFER FOR COMMENT
  115. COMSIZ    EQU    COMBUF+1    ;LENGTH OF INPUT (SET BY CP/M)
  116. COMONE    EQU    COMBUF+2    ;FIRST CHARACTER INPUT
  117. ;
  118. PROMPT:    DB    9,';$'
  119. ;
  120. BUFFERS:    ;MACROS WILL STICK BUFFERS HERE
  121. MEMSIZE    EQU    BUFFERS+@NXTB    ;TOTAL MEMORY USED
  122.     END
  123.