home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol072 / notate.asm < prev    next >
Assembly Source File  |  1984-04-29  |  3KB  |  124 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 FROM FILE F INTO X
  24.     GET    F
  25.     STA    X
  26.     ENDM
  27. ;
  28. WRITE    MACRO    F,X        ;;WRITE 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 BEING 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.         DOWHILE CHAR,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    ; WITH 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    ;SINGLE 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.             MVI A,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
  95.             PUT DEST
  96.             LXI    H,COMSIZ
  97.             DCR    M
  98.             ENDDO
  99.         POP    H
  100.         ENDW
  101.         NXTCHR    SOURCE,DEST,CHAR    ;GET NEXT CHARACTER
  102.         ENDDO    ;END OF MAIN LOOP
  103. ;
  104. ;    CLOSE AND SWITCH FILES
  105. CLOSUP:    FINIS    DEST    ;CLOSE OUTPUT FILE
  106.     FILE    SETFILE,BACKUP,,1,BAK    ;CREATE .BAK FCB
  107.     ERASE    BACKUP    ;DELETE OLD BACKUP IF ANY
  108.     RENAME    BACKUP,SOURCE    ;RENAME INPUT FILE TO .BAK
  109.     RENAME    SOURCE,DEST    ;RENAME OUTPUT TO INPUT
  110. ;
  111. ;    ALL DONE, EXIT
  112.     JMP    0
  113. ;
  114. CHAR:    DS    1    ;HOLDS CURRENT CHARACTER FROM SOURCE FILE
  115. COMBUF:    DS    130    ;INPUT BUFFER FOR COMMENT
  116. COMSIZ    EQU    COMBUF+1    ;LENGTH OF INPUT (SET BY CP/M)
  117. COMONE    EQU    COMBUF+2    ;FIRST CHARACTER INPUT
  118. ;
  119. PROMPT:    DB    9,';$'
  120. ;
  121. BUFFERS:    ;MACROS WILL STICK BUFFERS HERE
  122. MEMSIZE    EQU    BUFFERS+@NXTB    ;TOTAL MEMORY USED
  123.     END
  124.