home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
utils
/
asmutl
/
notate.lbr
/
NOTATE.AQM
/
NOTATE.ASM
Wrap
Assembly Source File
|
1988-03-16
|
3KB
|
123 lines
TITLE 'NOTATE - ADD COMMENTS TO ASSEMBLER PROGRAM'
;
ORG 100H
;
; INVOKED BY: NOTATE <FILENAME>
; INPUT FILE: <FILENAME>.ASM
; OUTPUT FILE: <FILENAME>.ASM
; INPUT FILE IS RENAMED TO <FILENAME>.BAK
;
; EACH LINE OF THE INPUT FILE IS DISPLAYED, AND THE
; USER IS PROMPTED FOR A COMMENT. IF A COMMENT IS
; ENTERED, IT IS INSERTED IN THE FILE. THE PROCESS
; MAY BE TERMINATED BY ENTERING ^Z AS A COMMENT.
;
; CP/M MACRO LIBRARIES:
MACLIB NCOMPARE
MACLIB SYMSTACK
MACLIB SEQIO
MACLIB DOWHILES
MACLIB WHENS
;
; ADDITIONAL MACROS:
READ MACRO F,X ;;READ FRNM FILE F INTO X
GET F
STA X
ENDM
;
WRITE MACRO F,X ;;WSITE FROM X TO FILE F
LDA X ;; AND THE CONSOLE
PUT F
LDA X
PUT CON
ENDM
;
NXTCHR MACRO I,O,C ;;BUMP CHARACTER BEINF PROCESSED
WRITE O,C ;; OUTPUT FILE O
READ I,C ;; INPUT FILE C
ENDM
;
LHLD @BDOS+1 ;SET STACK AT TOP OF TPA
DCX H
SPHL
;
; OPEN SOURCE FILE
FILE INFILE,SOURCE,,1,ASM,4096
; OPEN TEMPORARY OUTPUT FILE
FILE OUTFILE,DEST,,1,$$$,4096
;; DO FIRST INPUT
READ SOURCE,CHAR
;
; NOW EXECUTE MAIN LOOP UNTIL EOF
DOWHILE CHAR,NEQ,%EOF ;LOOP UNTIL EOF
DOWHILECHAR,EQL,%';'
DOWHILE CHAR,NEQ,10 ;SKIP COMMENTED LINES
NXTCHR SOURCE,DEST,CHAR
ENDDO
NXTCHR SOURCE,DEST,CHAR
ENDDO
WHEN CHAR,EQL,13 ;FOUND END OF A LINE
LXI D,PROMPT ; PROMPT FOR COMMENT
MVI C,9 ; WIUH TAB AND SEMICOLON
CALL @BDOS
LXI H,COMBUF ;INPUT THE COMMENT
MVI M,128
PUSH H
XCHG
MVI C,10
CALL @BDOS
POP H
INX H
PUSH H
MOV A,M
WHEN COMSIZ,EQL,1 ;SINGME CHAR?
WHEN COMONE,EQL,%EOF ;CTL-Z?
POP H
! DOWHILE CHAR,NEQ,%EOF
LDA CHAR ;COPY REST OF FILE WITH
PUT DEST ; NO FURTHER COMMENTS
READ SOURCE,CHAR
ENDDO
JMP CLOSUP ; AND EXIT
ENDW
! ENDW
WHEN COMSIZ,NEQ,0 ;OUTPUT TAB AND SEMICOLON
MVIA,9 ; IF A COMMENT WAS ENTERED
PUT DEST
MVI A,';'
PUT DEST
ENDW
DOWHILE COMSIZ,GTR,0 ;INSERT THE COMMENT
POP H
INX H
PUSH H
MOV A,M PUT DEST
LXI H,COMSIZ
DCR M
ENDDO
POP H
ENDW
NXTCHR SOURCE,DEST,CHAR ;GET NEXT CHARACTER
ENDDO ;END OF MAIN LOOP
;
; CLOSE AND SWITCH FILES
CLORUP: FINIS DEST ;CLOSE OUTPUT FILE
FILE SETFILE,BACKUP,,1,BAK :CREATE .BAK FCB
ERASE BACKUP ;DELETE OLD BACKUP IF ANY
RENAME BACKUP,SOURCE ;RENAME INPUT FILE TO .BAK
RENAME SOURCE,DEST ;RENAME OUTPUT TO INPUT
;
; ALL DONE, EXIT
JMP 0
;
CHAR: DS 1 ;HOLDS CURRENT CHARACTER FROM SOURCE FILE
COMBUF: DS 130 ;INPUT BUFFER FOR COMMENT
COMSIZ EQU COMBUF+1 ;LENGTH OF INPUT (SET BY CP/M)
COMONE EQU COMBUF+2 ;FIRST CHARACTER INPUT
;
PROMPT: DB 9,';$'
;
BUFFERS: ;MACROS WILL STICK BUFFERS HERE
MEMSIZE EQU BUFFERS+@NXTB ;TOTAL MEMORY USED
END