.TITLE DUMMCR ;THIS TASK JUST GETS AN MCR COMMAND LINE AND DUMPS IT IN OCTAL, ;AND ASCII ; ; F.BORGER ; MRMC % MEDICAL PHYSICS ; SEPT 28,78 ; .MCALL GMCR$,DIR$,QIOW$,EXIT$S ; ;DATA AREAS ; GETMCR: GMCR$ ;MCR BUFFER QIODPB: QIOW$ IO.WVB,5,1,,,, MES: .ASCII /DUMP OF MCR COMMAND LINE/ MESL=.-MES MES1: .ASCII /LENGTH OF COMMAND = / MES1P: .ASCII / / MES1L=.-MES1 MES2: .ASCII /TERMINATOR = / MES2P: .ASCII / / MES2L=.-MES2 .EVEN MAIN: .BLKB 8. ;ROOM FOR 6 DIGITS AND 2 SPACES MAIN1: .WORD ;ROOM FOR 2 ASCII CHARACTERS MAINL=.-MAIN START: DIR$ #GETMCR ;GET MCR COMMAND LINE MOV @#0,R1 ;LENGTH IN R1 MOV R1,R5 ;SAVE IN R5 MOV #MES1P,R0 ;POINT TO ASCII CLR R2 ;SUPRESS LEADING 0'S JSR PC,$CBOMG ;CONVERT INTO LINE MOV R5,R1 ;RESTORE LINE LENGTH ADD #GETMCR+2,R1 ;POINT R1 TO TERMINATOR MOVB (R1),R1 ;GET TERMINATOR MOV #MES2P,R0 ;POINT TO SECOND MESSAGE JSR PC,$CBOMG ;CONVERT INTO LINE DIR$ #QIODPB ;WRITE HEADER LINE MOV #MES1,QIODPB+Q.IOPL ;CHANGE TO NEXT LINE MOV #MES1L,QIODPB+Q.IOPL+2 ;OF OUTPUT DIR$ #QIODPB ;WRITE IT MOV #MES2,QIODPB+Q.IOPL ;CHANGE TO NEXT LINE MOV #MES2L,QIODPB+Q.IOPL+2 ;OF OUTPUT DIR$ #QIODPB MOV #MAIN,QIODPB+Q.IOPL ;CHANGE TO NEXT LINE MOV #MAINL,QIODPB+Q.IOPL+2 ;OF OUTPUT MOV #GETMCR+2,R3 ;POINT R0 TO START OF COMMAND BUFFER ASR R5 ;CONVERT R5 TO WORD COUNT INC R5 ;POSSIBLE ODD # OF CHARACTERS MOV #1,R2 ;DONT SUPRESS LEADING 0'S LOOP: MOV #MAIN,R0 ;POINT AT OUTPUT LINE MOV (R3),R1 ;NUMBER IN R1 MOV (R3)+,MAIN1 ;AS ASCII IN BUFFER JSR PC,$CBOMG ;CONVERT TO OCTAL MOVB #40,(R0)+ MOVB #40,(R0)+ ;FILL 2 SPACES DIR$ #QIODPB ;WRITE LINE SOB R5,LOOP ;LOOP FOR N WORDS EXIT$S .END START